PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : klammerausdruck nur bei Ersterwähnung im Text



Minze
22-07-2013, 17:44
Hallo werte Netzgemeinde,

ich komm direkt zur Sache: Zur Zeit schreibe ich einen Bericht über mein Praktikum in Russland. Dabei tauchen naturgemäß Begriffe in kyrillischen Buchstaben auf, mit denen ich den geneigten Leser allerdings nicht mehr als nötig belasten möchte. Vielmehr möchte ich mit den deutschen bzw. englischen Transliterationen arbeiten und die russischen Bezeichnungen nur bei der ersten Erwähnung im Text mit anführen. Beispielsweise so hier:


Im Ort Nytva (Нытва) gibt es ein Staubecken gleichen Namens. Die Wasserqualität im Nytva-Staubecken ist sehr schlecht.

Ich möchte erreichen, dass Latex automatisch die Ersterwähnung erkennt. Bei meiner Suche nach einer Lösung bin ich auf das acronym (http://mirror.macomnet.net/pub/CTAN/macros/latex/contrib/acronym/acronym.pdf)-Paket gestoßen, was aber ziemlich genau das Gegenteil dessen fabriziert, was ich erreichen möchte. Ein kurzes Beispiel:



\begin{acronym}[SQL]
\acro{Nytva}{\foreignlanguage{russian}{Нытва}}
\end{acronym}

Im Ort \ac{Nytva} gibt es ein Staubecken gleichen Namens. Die Wasserqualität im \ac{Nytva}-Staubecken ist sehr schlecht.


Das führt zu diesem Ergebnis:

Im Ort Нытва (Nytva) gibt es ein Staubecken gleichen Namens. Die Wasserqualität im Nytva-Staubecken ist sehr schlecht.

Bei der ersten Erwähnung soll es aber genau anders herum sein (kyrillische Buchstaben in Klammern).

Habt ihr einen Vorschlag für eine elegante Lösung?

hakaze
22-07-2013, 19:06
Lies dir mal in der acronym-Paketdokumentation (http://texdoc.net/texmf-dist/doc/latex/acronym/acronym.pdf) die Verwendung der Befehle für Kurz-, Langform und Neudefinition von Akronymen durch! So geht's:

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[russian,ngerman]{babel}
\usepackage[T2A,T1]{fontenc}

\usepackage{lmodern}
\usepackage{acronym}

\begin{document}
\begin{acronym}[SQL]
\acro{Nytva}{\foreignlanguage{russian}{Нытва}}
\end{acronym}

Im Ort \acs{Nytva} gibt es ein Staubecken gleichen Namens. Die Wasserqualität im \acl{Nytva}-Staubecken ist sehr schlecht.

\end{document}
PS. Bitte poste das nächste Mal auch ein lauffähiges Minimalbeispiel und nicht nur Code-Fetzen!

Minze
22-07-2013, 19:21
Hallo hakaze,

hab Dank für deine Antwort. Auf ein Minimalbeispiel habe ich verzichtet, da es in diesem Falle einfach nicht sinnvoll ist bzw, ich gar keins erstellen kann. Schließlich habe ich keine Frage zum acronym-Paket, sondern zu einem Problem, für dass mir kein passendes Paket einfällt. Der Verweis auf's acronym-Paket sollte nur eine Inspiration für euch sein.

Deine Lösung hilft mir nicht weiter, da ich dann selber erkennen muss, wann das Wort das erste Mal auftaucht, dann kann ich's auch ohne das acronym-Paket schreiben.

rais
22-07-2013, 19:29
Moin moin,
automagisch ginge vllt


\documentclass{article}
\usepackage[T2A,T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian,ngerman]{babel}
\usepackage{acronym}
\makeatletter
\renewcommand*{\@acf}[1]{%
\ifAC@footnote
\acsfont{\AC@acs{#1}}%
\footnote{\AC@placelabel{#1}\hskip\z@\AC@acl{#1}{} }%
\else
\acsfont{% Orig:\acffont
\AC@placelabel{#1}\hskip\z@\AC@acs{#1}%Orig: \AC@acl{#1}
\nolinebreak[3] %
\acfsfont{(\acffont{\AC@acl{#1}})}%Orig: (\acsfont{\AC@acs{#1}})
}%
\fi
\ifAC@starred\else\AC@logged{#1}\fi
}
\makeatother
\begin{document}
\begin{acronym}[Nytva]%<-- hier sollte eigentlich der breiteste Eintrag stehen
\acro{Nytva}{\foreignlanguage{russian}{Нытва}}
\end{acronym}

Im Ort \ac{Nytva} gibt es ein Staubecken gleichen Namens. Die Wasserqualität im \ac{Nytva}-Staubecken ist sehr schlecht.
\end{document}



Bitte poste das nächste Mal auch ein lauffähiges Minimalbeispiel und nicht nur Code-Fetzen!

Full ACK;-)

MfG

Minze
22-07-2013, 19:54
Das funktioniert tatsächlich, sogar mit diesem Paket, ich bin ganz entzückt!
Ich hab früher ab und zu programmiert, muss aber zugeben, dass ich deine Codezeilen nicht verstehe, geschweige denn, dass ich selbst drauf gekommen wäre.

Der Kommentar zum breitesten Eintrag ist natürlich berechtigt, das war noch übrig vom Rumprobieren mit dem acrosym-Beispiel.

Nun, dann wünsch ich euch eine gedeihliche Nacht, ich geh jetzt noch die Toilette putzen (http://imgur.com/FOfrzfH) ;-)

Minze
22-07-2013, 23:57
Nun konnte ich nicht schlafen, habe weiter am Text herumgebastelt und stoße nun auf das Problem, dass ich das acronym-Paket zusätzlich gern noch für seine ursprünglichen Zwecke nutzen möchte. So möchte ich beispielsweise die Namen der beteiligten Institute nur einmal ausschreiben und anschließend abkürzen lassen.

Gibt es eine Möglichkeit, eine zweite Sammlung von Abkürzungen zu verwenden?

In etwa so:


\begin{acronym}%erste Acronymsammlung in der Variante, wie sie von rais bearbeitet wurde
\acro{Nytva} {\foreignlanguage{russian}{Нытва}}
\end{acronym}

\begin{acronym}%zweite Acronymsammlung, welche wie vom Acronympaket vorgesehen funktioniert
\acro{IfS} {Institut für Spaß}
\end{acronym}


mit folgendem Ergebnis:


In der Stadt Nytva (Нытва) gibt es ein Staubecken, ebenfalls mit dem Namen Nytva.
Das Institut für Spaß (IfS) versucht, dieses Staubecken in IfS-Becken umzubenennen.


Da ich rais' Code nicht verstehe, sehe ich mich nicht im Stande, mir eine Lösung für das angesprochene Problem zu überlegen.

Außerdem eröffne ich keinen neuen Thread, da andere eventuell genau dasselbe Problem in dieser Kombination haben.

cgnieder
23-07-2013, 01:57
Mit einem anderen Paket, acro (http://www.ctan.org/pkg/acro), geht das leichter:


\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[russian,ngerman]{babel}
\usepackage[T2A,T1]{fontenc}

\usepackage{lmodern}
\usepackage{acro}
\acsetup{first-style=reversed}

\DeclareAcronym{Nytva}{
short = Nytva ,
long = \foreignlanguage{russian}{Нытва} ,
class = russian
}

\DeclareAcronym{IfS}{
short = IfS ,
long = Institut für Spaß
}

\begin{document}

\printacronyms[exclude-classes=russian]

\section{Blubber}
Im Ort \ac{Nytva} gibt es ein Staubecken gleichen Namens. Die Wasserqualität
im \ac{Nytva}-Staubecken ist sehr schlecht. Das \ac{IfS} versucht, dieses
Staubecken in \ac{IfS}-Becken umzubenennen.

\end{document}

Allerdings sind jetzt natürlich alle ersten Erwähnungen umgedreht.

Grüße

Minze
23-07-2013, 10:55
Hallo Clemens, hab Dank für deine Antwort.

Wie du schon schreibst, funktioniert das dann zwar mit Nytva richtig, das IfS wird bei der Ersterwähnung allerdings genau falsch aufgeführt.
Nach einigem Herumspielen mit dem acro-Paket und dem Ausprobieren der Optionen

foreignlanguage
first long format
first style

komme ich zu zwei fast realisierbaren Lösungen:
Denkbar wäre, jeder Abkürzung einzeln zu sagen:

first-style=reversed (bei russischen Wörtern)
oder eben ohne diese Option bei deutschen.


Alternativ ist es vielleicht realisierbar, dass bei Verwendung des foreignlanguage-keys die ausländische Bezeichnung bei Ersterwähnung in Klammern erscheint, anstelle der Kurzform (ohne das standardmäßig erscheinende Komma). Die Kurzform dieser Abkürzung würde dann also nie benötigt.


\acsetup{}

\DeclareAcronym{Nytva}{
short = ,
long = Nytva,
foreign = \foreignlanguage{russian}{Нытва}
}

\DeclareAcronym{IfS}{
short = IfS ,
long = Institut für Spaßsicherheit
}


Das führt zu diesem Ergebnis:

Der Fluss Nytva (Нытва, ) in der Stadt Nytva.
Das Institut für Spaßsicherheit (IfS) mit den Mitarbeitern des IfS.

Ansonsten gefällt mir dieses Paket schon fast besser als das acrosym-Paket.
Als ich mich gerade dazu entschlossen hatte, dem Autor des Paketes eine Mail zu schreiben, fiel mir auf, dass es wohl von dir selbst stammt.
Da spar ich mir die Mail und frage hier, ob du noch eine weitere Idee hast?

Nachtrag:
Mir fällt gerade ein, dass die erste von mir angesprochene Lösungsmöglichkeit nur dann funktioniert, wenn man sich kein Abkürzungsverzeichnis ausgeben lässt. Das hab ich zwar in diesem Text nicht vor, da die Abkürzungen jedem Beteiligten klar sind. Im Sinne einer allgemein verwendbaren Lösung ist dier Umstand aber ein Problem.

cgnieder
23-07-2013, 11:37
Denkbar wäre, jeder Abkürzung einzeln zu sagen:

first-style=reversed (bei russischen Wörtern)
oder eben ohne diese Option bei deutschen.


Dann könnte man ja gleich manuell \acs{nytva} (\acl{nytva}) eingeben... ;)



Da spar ich mir die Mail und frage hier, ob du noch eine weitere Idee hast?

Deine beste Option ist vermutlich ein anderes, flexibleres Paket: glossaries (http://www.ctan.org/pkg/glossaries). Sowohl acro als auch acronym sind für das, was Du möchtest, eigentlich nicht gedacht. glossaries bringt die Möglichkeiten aber mit. (Sollte einem das immer noch nicht flexibel genug sein, könnte man auch das generische (nicht im Sinne des TeX-Baumes) datagidx verwenden, siehe z.B. hier (http://tex.stackexchange.com/a/118549/5049)).

http://www.mrunix.de/forums/attachment.php?attachmentid=5795&stc=1&d=1374572192


% arara: pdflatex
% arara: makeglossaries
% arara: pdflatex
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[russian,ngerman]{babel}
\usepackage[T2A,T1]{fontenc}

\usepackage{lmodern}
\usepackage[ngerman]{translator}
\usepackage[
shortcuts,
acronym,
sanitize={description=false}
]{glossaries}

\makeglossaries

\newglossaryentry{Nytva}{
name = Nytva ,
description = \foreignlanguage{russian}{Нытва}
}

\renewcommand\glsdisplayfirst[4]{#1 (#2)}

\newacronym{IfS}{IfS}{Institut für Spaß}

\begin{document}

\printglossary[type=\acronymtype]

\section{Blubber}
Im Ort \gls{Nytva} gibt es ein Staubecken gleichen Namens. Die Wasserqualität
im \gls{Nytva}-Staubecken ist sehr schlecht. Das \ac{IfS} versucht, dieses
Staubecken in \ac{IfS}-Becken umzubenennen.

\end{document}

Grüße

Minze
23-07-2013, 12:16
Das scheint gut zu funktionieren.

Zwei Sachen sind mir beim Herumbasteln aufgefallen, die ich hier nennen möchte:

Sollte ich tatsächlich mal ein Glossar verwenden wollen, mit Erklärungen zu einzelnen Begriffen, so habe ich das Problem, dass es schon als Abkürzungsverzeichnis zweckentfremdet wurde.
Die Umgebung \begin{acro} ... \end{acro} scheint jetzt nicht mehr zu funktionieren, nur noch über den Befehl \newacronym{IfS}{IfS}{Institut für Spaß} scheint das Hinzufügen neuer Abkürzungen möglich.

Die genannten Punkte verursachen in meinem speziellen Fall keine Probleme, wollte sie nur nennen.

Zum Dank gibt's noch ein schönes Foto aus der Küche (http://imgur.com/lhVIGTt)

cgnieder
23-07-2013, 12:23
Sollte ich tatsächlich mal ein Glossar verwenden wollen, mit Erklärungen zu einzelnen Begriffen, so habe ich das Problem, dass es schon als Abkürzungsverzeichnis zweckentfremdet wurde.

Stimmt nicht, glossaries (man beachte den Plural im Namen) ist durchaus fähig, mehrere Glossare zu handhaben. :)


Die Umgebung \begin{acro} ... \end{acro} scheint jetzt nicht mehr zu funktionieren, nur noch über den Befehl \newacronym{IfS}{IfS}{Institut für Spaß} scheint das Hinzufügen neuer Abkürzungen möglich.

Das ist nicht wirklich überraschend, oder? Die {acro}-Umgebung wird von acronym und nicht von glossaries definiert.

Das glossaries Paket hat eine umfangreiche Anleitung namens glossaries-user.pdf und außerdem eine Einführung für Anfänger namens glossariesbegin.pdf, denen man alle Details entnehmen kann. Beide findet man auf der Kommandozeile mit

texdoc -l glossaries

Grüße

Minze
23-07-2013, 12:39
Na prima, dann sind diese beiden Punkte auch geklärt.

Ich muss zugeben, dass ich nach diesem ganzen Gewurschtel übersehen habe, dass das acronym-Paket gar nicht mehr in deinem Beispiel verwendet wird. Dass das glossaries-Paket mit mehreren Wortverzeichnissen umgehen kann, wusste ich nicht. Ja, ich hab mir die glossaries-Dokumentation nicht durchgelesen, sondern nur mit deiner Vorlage experimentiert.

Nun denn, möge dieser Thread auch den vielen anderen Nutzern helfen, welche kyrillische Worte nur bei der Ersterwähnung anführen, daneben aber weiterhin Abkürzungen verwenden wollen ;)

cgnieder
23-07-2013, 12:43
Dass glossary mit mehreren Wortverzeichnissen umgehen kann, wusste ich nicht. Ja, ich hab mir die glossary-Dokumentation nicht durchgelesen, sondern nur mit deiner Vorlage experimentiert.

Achtung: nicht glossary (ein Paket, dass schon länger obsolet ist), sondern glossaries :) (Beide übrigens von derselben Autorin.)

Grüße

Minze
23-07-2013, 12:45
Noch während ich meinen Beitrag noch einmal gelesen habe, als er schon im Forum stand, fiel es mir auch auf...
Hab's jetzt korrigiert, damit niemand das falsche Paket nutzt.