Seite 1 von 2

externes Abkürzungsverzeichnis

Verfasst: Do 3. Aug 2017, 10:35
von esvaupeee
Hey Leute,

ich steh grade auf dem Schlauch. Ich benötige für meine Dissertation ein Abkürzungsverzeichnis, möchte aber nicht in meinem Hauptdokument alle Abkürzungsdefinitionen stehen haben. Das werden ja extrem viele werden. Kann ich das als externes Verzeichnis erstellen und per \include einfügen? Dachte beim Abkürzungsverzeichnis an das glossaries-package.

Viele Grüße,
Simon

Verfasst: Do 3. Aug 2017, 10:52
von markusv
Warum sollte das nicht funktionieren?

Du solltest allerdings \input verwenden, siehe https://tex.stackexchange.com/questions ... vs-include.

Code hier übernommen.
\documentclass{article}
\begin{filecontents}{glossar.tex}
\newglossaryentry{latex}
{
    name=latex,
    description={Is a mark up language specially suited 
    for scientific documents}
}
 
\newglossaryentry{maths}
{
    name=mathematics,
    description={Mathematics is what mathematicians do}
}
\end{filecontents}
\usepackage[utf8]{inputenc}
\usepackage{glossaries}
\makeglossaries 
\input{glossar.tex}
\title{How to create a glossary}
\author{ }
\date{ }
\begin{document}
\maketitle
The \Gls{latex} typesetting markup language is specially suitable 
for documents that include \gls{maths}. 
\clearpage
\printglossaries
\end{document}

Verfasst: Do 3. Aug 2017, 14:18
von esvaupeee
Danke für die Antwort. Mein Ziel ist es, das Abkürzungsverzeichnis extern zu laden. Es sollte vor dem eigentlichen Dokument stehen. Hab meinen Code mal verkürzt, um ein Minimalbeispiel anführen zu können:
\documentclass[fontsize=12pt,twoside,a4paper,BCOR=16mm,toc=flat,headsepline=true]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[english,ngerman]{babel}
\usepackage[autostyle]{csquotes}
\usepackage{graphicx}
\usepackage{microtype}
\usepackage{amsmath}
\usepackage[acronym]{glossaries}

\begin{filecontents}{abkuerzungsverzeichnis.tex}
\end{filecontents}

\makeglossaries

\graphicspath{{Abbildungen/}}

\usepackage[style=authoryear]{biblatex}
\DeclareNameAlias{sortname}{family-given}
\addbibresource{references.bib}

\begin{document}

\printglossary	


Hallo \acrshort{World}


\printbibliography

\end{document}
Das tex-file "abkuerzungsverzeichnis" liegt im gleichen Ordner. im tex-file "abkuerzungsverzeichnis steht: \newacronym{World}{Welt}{ausgeschriebene Bezeichnung}


Es resultiert die Fehlermeldung: ! Package glossaries Error: Glossary entry `World' has not been defined.See the glossaries package documentation for explanation.Type H <return> for immediate help.... Hallo \acrshort{World}

Wo liegt jetzt der Fehler? Bin dankbar über jede Hilfe.

Verfasst: Do 3. Aug 2017, 14:38
von markusv
Du musst im Hauptdokument sagen, dass du diese Datei einbinden möchtest. Das tust du, indem du in die Präambel die Anweisung
\input{abkuerzungsverzeichnis.tex}
schreibst.

Damit wird der Code, der sich in der Datei befindet, so behandelt, als würdest du ihn an der Stelle im Dokument schreiben.

Die filecontents-Umgebung dient lediglich dazu, "externe" Files zu erzeugen, bspw. online für Minimalbeispiele.
Vorsicht: lädst du das gleichnamige Paket filecontents, überschreibst du mit deiner Anweisung dein richtiges externes File.

Verfasst: Fr 4. Aug 2017, 10:45
von esvaupeee
Danke für die Hilfe, dann weiß ich jetzt zumindest schon mal, wie ich es aufbauen muss. Ich liebe Latex, jedoch bin ich absolut unbegabt, was programmieren angeht. Das Programm zeigt jetzt zwar keine Fehlermeldung mehr an, jedoch wird das Abkürzungsverzeichnis nicht ausgegeben. Ich weiß zwar, dass ich beim glossaries-package noch etwas separat kompilieren muss, bin bei der Durchführung aber überfragt.
\documentclass[fontsize=12pt,twoside,a4paper,BCOR=16mm,toc=flat,headsepline=true]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[english,ngerman]{babel}
\usepackage[autostyle]{csquotes}
\usepackage{graphicx}
\usepackage{microtype}
\usepackage{amsmath}
\usepackage[acronym]{glossaries}

\makeglossaries
\input{abkuerzungsverzeichnis.tex}


\graphicspath{{Abbildungen/}}

\usepackage[style=authoryear]{biblatex}
\DeclareNameAlias{sortname}{family-given}
\addbibresource{references.bib}

\begin{document}

\printglossary	


Hallo \acrshort{World}


\printbibliography

\end{document}

Verfasst: Fr 4. Aug 2017, 11:22
von Gast
Du musst entweder makeglossaries ausführen oder passende Aufrufe von makeindex. Näheres dazu steht in der [d]glossaries[/d]-Anleitung aber auch in Abschnitt 4 der [d]glossariesbegin[/d]-Kurz-Anleitung.

Verfasst: Mi 9. Aug 2017, 08:48
von esvaupeee
Ok danke für die Antwort. Wenn ich es richtig verstanden habe würden die meisten wohl die Verwendung von xindy empfehlen. Ich verwende weiterhin das Beispiel von weiter oben.

Hierfür soll ich zuerst Latex laufen lassen. Anschließend über die Kommandozeile (cmd?)

xindy -L german-C utf8 -I xindy -M myDoc -t myDoc.glg -o myDoc.gls myDoc.glo

ausführen. Dokumentenname habe ich geändert. Daraufhin sagt mir cmd: input file test2.glo does not exist at C:\Program Files\MiKTeX 2.9\scripts\xindy\xindy.pl line 549.

Bei erneutem Ausführen von Latex erscheint kein Abkürzungsverzeichnis. Ich glaube das ist alles etwas zu hoch für mich ;-) Kann mir irgendwer sagen was ich falsch mache?

Verfasst: Mi 9. Aug 2017, 09:09
von Gast
Mit dem Beispiel oben geht es nicht mit xindy, weil man dazu auch Option xindy angeben muss.

Außerdem passt die Fehlermeldung nicht zum angeblichen Aufruf.

Ob der Aufruf korrekt ist, hängt auch davon ab, welches Beispiel du konkret getestet hast. Da in dieser Diskussion mehrere angegeben sind, ist mir das nicht klar. Für Akronymverzeichnisse lautet der Aufruf AFAIK anders als für das Standard-Glossar.

Natürlich muss man sich für den Aufruf von xindy auch im richtigen Verzeichnis, nämlich im Dokumentverzeichnis, befinden, damit die Dateien gefunden werden und das Ergebnis an der richtigen Stelle landet.

Am einfachsten ist die Verwendung von makeglossaries. Bei Linux funktioniert das out of the box. Windows-Anwender müssen dazu ggf. erst perl installieren. Wobei man für xindy AFAIK auch perl benötigt. Also hast Du das eventuell schon gemacht.

Bei Verwendung von makeindex also ohne Option xindy kann man alternativ zu makeglossaries auch makeglossaries-lite verwenden. Das ist ein Lua-Script und funktioniert daher auch unter Windows out of the box, weil der Lua-Interpreter texlua Teil jeder TeX-Distribution ist.

Sowohl die Verwendung von makeglossaries als auch makeglossaries-lite hat den Vorteil, dass man sich über die Parameter für den Aufruf nicht viele Gedanken machen muss. Man gibt als einzigen Parameter einfach den Basisnamen des Hauptdokuments an. Alles andere sucht sich das Programm dann selbst zusammen.

Verfasst: Mi 9. Aug 2017, 10:57
von esvaupeee
Ok, das Argument hat mich überzeugt und ich versuche es mit makeindex. Hier nun nochmal mein Beispiel:
\documentclass[fontsize=12pt,twoside,a4paper,BCOR=16mm,toc=flat,headsepline=true]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[english,ngerman]{babel}
\usepackage[autostyle]{csquotes}
\usepackage{microtype}
\usepackage{amsmath}
\usepackage[acronym]{glossaries}

\makeglossaries
\input{abkuerzungsverzeichnis.tex}

\usepackage[style=authoryear]{biblatex}
\DeclareNameAlias{sortname}{family-given}
\addbibresource{references.bib}

\begin{document}

\deftranslation[to=German]{Acronyms}{Abkürzungsverzeichnis}
\printglossaries[type=\acronymtype]	


Hallo \acrshort{World}


\printbibliography

\end{document}
Im file abkuerzungsverzeichnis.tex steht
\newacronym{World}{Welt}{ausgeschriebene Bezeichnung}

So nun kommt die Frage aller Fragen: Wo muss ich jetzt noch welche Befehle eingeben, damit das Verzeichnis ausgegeben wird? Und noch wichtiger: Verträgt sich das ganze dann mit biblatex? Da ich im Moment bei schnellem Übersetzen die Folge pdflatex + biblatex + pdflatex(2x) + pdf anzeigen habe.

Verfasst: Mi 9. Aug 2017, 11:18
von Gast
Ich habe keine Lust mehr auf Bastelbeispiele. Warum zum Kuckuck hältst du dich nicht an die Minimalbeispiel-Anleitung?

Jedenfalls empfehle ich, entweder makeglossaries oder makeglossaries-lite wie oben bereits erwähnt aufzurufen.