
Eigenes (chemisches) Verzeichnis erstellen
- cgnieder
- Forum-Meister
- Beiträge: 730
- Registriert: Fr 22. Okt 2010, 18:37
- Wohnort: Herrenberg
- Kontaktdaten:
Dann hab ich keine Idee mehr.
Das folgende funktioniert sowohl auf meinem System als auch auf Overleaf wie gewünscht:
Das folgende funktioniert sowohl auf meinem System als auch auf Overleaf wie gewünscht:
\documentclass[listof=totoc]{scrartcl} \usepackage[ngerman]{babel} \usepackage{chemnum} % neues Verzeichnis: \DeclareNewTOC[ type = compound , types = compounds , listname = {Verzeichnis der Verbindungen} ]{loc} % Befehl, um Verbindungen in die Liste einzutragen: \newcommand*\compoundlistentry[1]{% \addcontentsline{loc}{compound}{% % schreibe Label: \refcmpd{#1}% % wenn `name' gegeben, dann den auch angeben: \if\relax\cmpdproperty{#1}{name}\relax \else \space(\cmpdproperty{#1}{name})% \fi }% } \ExplSyntaxOn \tl_new:N \l_chemnum_compound_name_tl % umdefinieren von \chemnum_initialize_compound:n \cs_set_protected:Npn \chemnum_initialize_compound:n #1 { \seq_if_in:NnF \g__chemnum_defined_compounds_seq {#1} { \seq_gput_right:Nn \g__chemnum_defined_compounds_seq {#1} \int_gincr:N \g__chemnum_main_int \stepcounter{cmpdmain} } \seq_if_exist:cF { g__chemnum_#1_initiated_subcompounds_seq } { \seq_new:c { g__chemnum_#1_initiated_subcompounds_seq } } %%% ab hier neu %%% % neue Eigenschaft `name': \chemnum_compound_declare_properties:nn {#1} {name} % setze die Eigenschaft: \chemnum_compound_set_property:nnV {#1} {name} \l_chemnum_compound_name_tl % schreibe den Listeneintrag: \compoundlistentry {#1} } % neue Option `name': \keys_define:nn {chemnum} { name .tl_set:N = \l_chemnum_compound_name_tl , name .groups:n = {compound} } \ExplSyntaxOff \begin{document} \tableofcontents \listofcompounds \section{Einleitung} \cmpd{a.x,b,c.{x,y,z},d} Glucose \cmpd[name=Glucose]{Gluc} Ribose \cmpd[name=Ribose]{Rib} Saccharose \cmpd[name=Saccharose]{Sach} \cmpd{Gluc} ist Bestandteil von \cmpd{Sach} \cmpd{foo} \end{document}
Clemens
Paketauthor
Paketauthor
Hallo, bei mir ist jetzt nochmal ein Problem aufgetreten^^
Und zwar verwende ich den Befehl, den du geschrieben hast:
Das funktioniert auch so, wie es soll
Nur bei der letzten Verbindung wird im Verzeichnis nur "Dihydroxido-ethan-1" angezeigt, es bricht also immer beim "," ab (ich habe es auch mit anderen Verbindungen probiert, da war es auch so. Ohne Komma funktioniert es, egal wie lange der Name ist).
Könntest du mir vielleicht sagen, was ich noch ändern muss, damit alles angezeigt wird?
Auf das Komma kann ich ja nicht verzichten^^
PS: Kann es sein, dass im Text bei (4) ein Leerzeichen vor der 4 ist? Kann man das auch noch entfernen?
Ich Danke dir schon einmal im Voraus und hoffe, dass du mir helfen kannst
Und zwar verwende ich den Befehl, den du geschrieben hast:
\documentclass[listof=totoc]{scrartcl} \usepackage[ngerman]{babel} \usepackage{chemnum} \DeclareNewTOC[ type = compound , types = compounds , listname = {Verzeichnis der Verbindungen} ]{loc} % Befehl, um Verbindungen in die Liste einzutragen: \newcommand*\compoundlistentry[1]{ \addcontentsline{loc}{compound}{\refcmpd{#1} \if\relax\cmpdproperty{#1}{name}\relax \else \space\cmpdproperty{#1}{name}% \fi}} \ExplSyntaxOn \tl_new:N \l_chemnum_compound_name_tl % umdefinieren von \chemnum_initialize_compound:n \cs_set_protected:Npn \chemnum_initialize_compound:n #1 { \seq_if_in:NnF \g__chemnum_defined_compounds_seq {#1} { \seq_gput_right:Nn \g__chemnum_defined_compounds_seq {#1} \int_gincr:N \g__chemnum_main_int \stepcounter{cmpdmain} } \seq_if_exist:cF { g__chemnum_#1_initiated_subcompounds_seq } { \seq_new:c { g__chemnum_#1_initiated_subcompounds_seq } } \chemnum_compound_declare_properties:nn {#1} {name} \chemnum_compound_set_property:nnV {#1} {name} \l_chemnum_compound_name_tl \compoundlistentry {#1} } \keys_define:nn {chemnum} { name .tl_set:N = \l_chemnum_compound_name_tl , name .groups:n = {compound} } \ExplSyntaxOff \makeatletter \renewcommand\l@compound[2]{#1\par} \makeatother \begin{document} \tableofcontents \listofcompounds \section{Einleitung} Glucose \cmpd[name=Glucose]{Gluc} Ribose \cmpd[name=Ribose]{Rib} Saccharose \cmpd[name=Saccharose]{Sach} Pd(en)(OD)$_2$ (\cmpd[name=Dihydroxido-ethan-1,2-diamin-palladium(II)]{pden}) \end{document}

Könntest du mir vielleicht sagen, was ich noch ändern muss, damit alles angezeigt wird?




Auf das Komma kann ich ja nicht verzichten^^
PS: Kann es sein, dass im Text bei (4) ein Leerzeichen vor der 4 ist? Kann man das auch noch entfernen?
Ich Danke dir schon einmal im Voraus und hoffe, dass du mir helfen kannst
- Dateianhänge
-
- Ohne Titel.pdf
- (39.74 KiB) 348-mal heruntergeladen
- cgnieder
- Forum-Meister
- Beiträge: 730
- Registriert: Fr 22. Okt 2010, 18:37
- Wohnort: Herrenberg
- Kontaktdaten:
Wegen des Kommas im Namen. Schreibe den Namen in geschweifte Klammern:
Grüße
\cmpd[name={Dihydroxido-ethan-1,2-diamin-palladium(II)}]{pden}
Clemens
Paketauthor
Paketauthor
Das Leerzeichen kommt glaube ich aus
das sollte wie in Clemens' Antwort (leicht an Deine Version angepasst)
heißen.
Du hast in Deiner Version direkt nach der öffnenden Klammer ein paar Leerzeichen. Beachte, dass auch sonst Zeilenenden häufig mit einem % geschützt werden müssen, um unerwünschte Leerzeichen zu verhindern.
heißen.
\newcommand*\compoundlistentry[1]{ \addcontentsline{loc}{compound}{\refcmpd{#1} \if\relax\cmpdproperty{#1}{name}\relax \else \space\cmpdproperty{#1}{name}% \fi}}
\newcommand*\compoundlistentry[1]{% \addcontentsline{loc}{compound}{% \refcmpd{#1}% \if\relax\cmpdproperty{#1}{name}\relax \else \space\cmpdproperty{#1}{name}% \fi }% }
Du hast in Deiner Version direkt nach der öffnenden Klammer ein paar Leerzeichen. Beachte, dass auch sonst Zeilenenden häufig mit einem % geschützt werden müssen, um unerwünschte Leerzeichen zu verhindern.
heißen.
- cgnieder
- Forum-Meister
- Beiträge: 730
- Registriert: Fr 22. Okt 2010, 18:37
- Wohnort: Herrenberg
- Kontaktdaten:
Übrigens – für Summen- und sonstige chemische Formeln würde ich ein Paket verwenden, dass einem die Arbeit damit erleichtert:
Grüße
\documentclass{article} \usepackage{chemformula} \begin{document} \ch{Pd(en)(OD)2} \end{document}
Clemens
Paketauthor
Paketauthor