Automatisch sortierte Chemikalienliste als Tabelle

Tabellen und Grafiken erstellen und anordnen


obiknobi
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: So 15. Sep 2013, 20:38

Automatisch sortierte Chemikalienliste als Tabelle

Beitrag von obiknobi »

Hallo liebe LaTeX Community,

bin gerade an meiner Masterarbeit und dachte mir, dass eine automatisch generierte, sortierte Liste von Chemikalien und verwendeten Geräten eine ganz nette Sache wäre. Das alles am besten noch in formatierbarer Tabellenform.
Ich stell mir das so vor, dass man in einer separaten Datei alle in der Arbeitsgruppe vorhandenen Chemikalien und Geräte ähnlich wie in einem Bibtex-Literaturverzeichnis angibt (Name/Bezeichnung, Hersteller, Lieferant, Ort, Land,...), wie hier zu sehen:

\Chemicals

\newchementry{H20}
{
    Name=Wasser,
    Chem=H20, 			% Wobei es cool wäre, wenn es als "(\ce{H2O})" ausgegeben werden könnte
    Hersteller=Achem,
    Herstellerort=Achemstadt,	% schön wäre, wenn der Ort per "," vom Hersteller getrennt werden würde
    Herstellerland=Deutschland,	% Wobei es cool wäre, wenn es als "(Deutschland)" ausgegeben werden könnte
    Lieferant=Waterprovider,
    Lieferantort=Watercity,
    Lieferantland=Waterland
}
[...]
...und in der tex-Datei per \H2O \Zentrifuge etc. diese Infos abrufen kann (es braucht ja nicht jeder in der Arbeitsgruppe dieselben Sachen).
So wie hier:
\beginlist{Chemicals}
    \begin[name,hersteller]{tabular}{ll}
	\H2O \\
	\Bla \\
	\Bla2 \\
	\Xylophonyl\\
    \end{tabular}
\endlist{Chemicals}


Sehr praktisch wäre auch, wenn man als Option bei der erstellung der Tabelle im tex-Dokument angeben könnte, welche parameter ausgegeben werden sollen (z.B. nur Name und Hersteller), und dass die Kopfzeile der Tabelle auch dementsprechend formatiert wird.

s. Anhang

Ich hab mal manche package-docs durchforstet und "glossaries" scheint ein guter Anhaltspunkt zu sein. Als ich dann aber zu "datatool" kam hielt ich es für sinnvoll, erstmal euch zu fragen, bevor ich 225 Seiten Manual durchlese und es am Ende nix gebracht hat.
Kennt ihr vielleicht so ein package, das genau das macht, was ich möchte? Oder muss ich mir aus mehreren packages ein eigenes zusammenschustern? (Da wäre aber die Masterarbeitszeit zu schade für)

Vielen Dank schonmal im Voraus!

LG,

obiknobi
Dateianhänge
Chemtabelle.jpg
Chemtabelle.jpg (118.71 KiB) 1596 mal betrachtet

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Wäre Paket substances was für dich?
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

obiknobi
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: So 15. Sep 2013, 20:38

Beitrag von obiknobi »

Wow! Das ging ja schnell!

Das Package ist schonmal hammergut!

Ich kann meine eigenen Felder deklarieren und nach belieben abrufen und einen sort-Befehl gibt's auch, wobei ich noch nicht ganz geblickt hab, ob das innerhalb einer Tabelle auch funktionieren würde.

Muss mich noch richtig durch die doc durcharbeiten, aber damit kann ich bestimmt schonmal was anfangen. Ich probier's aus.

Vielen Dank!! :mrgreen:

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

Auf eigene Gefahr:
\documentclass{article}
\usepackage{substances}
\LoadSubstances{substances-examples}
\usepackage{array,booktabs,longtable}

\usepackage{l3sort}
\ExplSyntaxOn
\seq_sort:Nn \l_substances_chemicals_seq
  {
    \int_compare:nTF
      {
        \pdftex_strcmp:D
          { \str_lower_case:f { \prop_get:Nn \l_substances_sort_prop {#1} } }
          { \str_lower_case:f { \prop_get:Nn \l_substances_sort_prop {#2} } }
        = -1
      }
      { \sort_ordered: }
      { \sort_reversed: }
  }
\ExplSyntaxOff

\begin{document}

\begin{longtable}{ll}
  \toprule
    Name & Masse \\
  \midrule
  \endhead
  \ForAllSubstancesDo{%
    \GetSubstanceProperty{#1}{name} &
    \GetSubstanceProperty{#1}{mass} \\
  }
\end{longtable}

\end{document}
Grüße
Clemens
Paketauthor

Antworten