Herbarium mit LaTeX - Index erzeugen

Klassen und Pakete zur einfachen Umsetzung individueller Vorstellungen


jonasfitz
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Sa 25. Sep 2010, 18:52

Herbarium mit LaTeX - Index erzeugen

Beitrag von jonasfitz »

Hallo!

Ich möchte gerne mit LaTeX ein Herbarium anfertigen.
Unter de.comp.text.tex habe ich folgende Vorlage gefunden:
\documentclass[ngerman]{scrbook}
\usepackage{textmerg}
\usepackage{isodate}

\pagestyle{empty}

\Fields{\name\latname\familie\gattung\fundort\datum\lage\finder\bestimmer}

\begin{document}
\Merge{pflanzen.dat}{
\phantom{}
\vfill
\hfill\fbox{
\begin{minipage}{6cm}
{\center
{\bf\LARGE \name}\\
{\em\latname}\\[2ex]}
Familie: \hfill{\em\familie}\\
Gattung: \hfill{\em\gattung}\\[2ex]
Finder: \hfill{\em\finder}\\
Bestimmer: \hfill{\em\bestimmer}\\[2ex]
Gefunden am \origdate\printdate{\datum}\ in \fundort\ (\lage).
\end{minipage}
}\newpage
}
\end{document} 
pflanzen.dat enthält dann zeilenweise:
Name deutsch
Name lateinisch
Pflanzenfamilie
Pflanzenordnung
Fundort
Funddatum
Standort
Finder
Bestimmer
Soweit klappt das Ganze.
Jedoch möchte ich, dass auch ein Index der Pflanzen erstellt wird.
Bei dem Link oben gibt es schon einen Vorschlag, nämlich:
ach ja, der Index fehlte, dafuer noch \usepackage{makeidx}\makeindex
in den Vorspann, \index{\familie!\name} in das 2.Argument von Merge
und \printindex dorthin, wo das Verzeichnis stehen soll.
Wo genau füge ich die Codes ein? Mag mir jemand einen Tipp geben bzw. den ganzen Quelltext für obiges Herbarium samt Index geben?

"In das 2te Argument von \Merge..." verstehe ich nicht, bin relativer Anfänger.

Danke für alle Hinweise dazu oder sonstige Vorschläge.

MfG,
Jonas

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Die Vorlage, so wie Du sie verwendest hast, taugt absolut nichts. Zum einen sind da diverse obsolete Anweisungen wie \bf drin (siehe auch l2tabu), zum anderen produziert die Vorlage auch noch Fehler. Ich habe mal versucht das Aussehen - ohne Fehler! - nachzubauen. Ich empfehle aber dringend die Anleitungen zu den verwendeten Paketen - auch die Anleitung zu textmerg - zu lesen. Das steht auch drin, was das zweite Argument von \Merge zu bedeuten hat: Das ist der Code, der für jeden Datensatz ausgeführt wird, wobei die Feldbefehle zuvor jeweils entsprechend der Datendatei definiert werden.
\begin{filecontents*}{pflanzen.dat}
Name deutsch
Name lateinisch
Pflanzenfamilie
Pflanzenordnung
Fundort
Funddatum
Standort
Finder
Bestimmer 
Nume deutsch
Nume lateinisch
Pflunzenfamilie
Pflunzeordnung
Fandort
Fanddatum
Stundort
Funder
Bestummer
\end{filecontents*}
\documentclass[ngerman]{scrartcl}
\usepackage{textmerg}
\usepackage{isodate}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage{tabularx}
\usepackage{makeidx}\makeindex

\pagestyle{empty}

\Fields{\name\latname\familie\gattung\fundort\datum\lage\finder\bestimmer}

\begin{document}
\tableofcontents

\Merge{pflanzen.dat}{%
  \addsec[\name\ \protect\normalfont\protect\emph{(\latname)}]
         {\name\\{\normalfont\normalsize\emph{\latname}}}%
  \index{\familie!\name}
  \begin{tabularx}{8cm}{|X>{\em}r|}
    \hline
    Familie:   & \familie\\
    Gattung:   & \gattung\\
    Finder:    & \finder\\
    Bestimmer: & \bestimmer\\
    Gefunden am: & \datum \\
    \strut\phantom{Gefunden} in: & \fundort\ (\lage)\\
    \hline
  \end{tabularx}
}

\printindex
\end{document}
Typografisch ist das IMHO grauenvoll. Aber wenigstens funktioniert es und zeigt auch, wie man einen Index erstellen kann.

Die Aufrufreihenfolge sollte übrigens sein:
  • latex Dokumentname.tex
  • latex Dokumentname.tex
  • makeindex Dokumentname.idx
  • latex Dokumentname.tex
Die Endungen .tex und .idx kann man auch weglassen. Statt latex kann man natürlich auch pdflatex verwenden. Je nach verwendetem Editor gibt es auch Knöpfe für den Aufruf der einzelnen Programme.

BTW: LaTeX selbst können wir Dir hier leider nicht beibringen. Falls Dir also noch die Grundkenntnisse fehlen, sei ausdrücklich auf die zweite Zeile meiner Signatur hingewiesen. Falls Du dann aber noch Probleme hast, frag ruhig möglichst konkret nach.

jonasfitz
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Sa 25. Sep 2010, 18:52

Danke.

Beitrag von jonasfitz »

Hallo KOMA,

vielen Dank für den Code und die schnelle Antwort.
Du hast mir sehr weitergeholfen.

Ausgehend von deiner Vorlage werde ich noch ein bisschen basteln.

MfG,
Jonas

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Da Du praktisch alle Informationen geliefert hattest, die für das Verständnis, Analyse und Lösungsvorschlag notwendig waren, war es mir ein Vergnügen. Vor allem war es eine Herausforderung, bei der ich sehr zuversichtlich sein konnte, auch zu einem Ergebnis zu kommen. Das einzige, was verbesserungsfähig gewesen wäre, wäre ein vernünftiger Datensatz (möglichst in einer filecontents*-Umgebung) gewesen. So habe ich eben einen Blödsinnsdatensatz selbst erstellt.

BTW: Wenn die Frage damit beantwortet ist, solltest Du den Status entsprechend anpassen. Wenn die Frage noch nicht beantwortet ist, bitte angeben, was noch fehlt. Falls Du zunächst davon ausgehst, dass die Frage beantwortet ist und Du später feststellst, dass doch noch etwas fehlt, kannst Du natürlich den Status auch mehrfach ändern.

Markus
(Moderator)

jonasfitz
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Sa 25. Sep 2010, 18:52

Beitrag von jonasfitz »

Hallo!
Wenn die Frage damit beantwortet ist, solltest Du den Status entsprechend anpassen.
Ja, die Frage ist damit beantwortet.

Zur weiteren Info - für alle, die auch ein Herbarium mit LaTeX erstellen wollen:
Nach
\end{tabularx}
habe ich noch
\newpage
eingefügt, weil ich ja möchte, dass pro Seite nur eine Pflanze eingeklebt wird.

Habe noch
\pagestyle{empty}
ersetzt durch
\pagestyle{plain}
, damit auch Seitenzahlen angezeigt werden.

Desweiteren werde ich mit dem geometry-Paket folgenden Code in die Präambel einfügen, um die Ränder zu verkleinern. Es soll ja möglichst viel Platz für das Trockenpräparat sein, also sollte die Tabelle möglichst weit an den Rand gedrängt werden können.
\usepackage[%
left=2.7cm, right=2.7cm,%
top=2.3cm, bottom=2.3cm]{geometry}
Als nächstes möchte ich, dass die Tabelle ziemlich weit unten (entweder links oder rechts) platziert wird - auf diese Weise soll mehr Platz für die getrocknete Pflanze auf der Seite sein.
Ich denke, das kann ich irgendwie mit
\vfill
bewerkstelligen.
Ich weis noch nicht genau wie, jedoch werde ich es herausfinden.

Antworten