%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - chemnum - chemnum_de.tex % - a comprehensive approach for the numbering of chemical compounds % ----------------------------------------------------------------------------- % - Clemens NIEDERBERGER % - 2012/05/03 % - contact@mychemistry.eu % ----------------------------------------------------------------------------- % - If you have any ideas, questions, suggestions or bugs to report, please % - feel free to contact me. % ----------------------------------------------------------------------------- % - Copyright 2011-2012 Clemens Niederberger % - % - This work may be distributed and/or modified under the % - conditions of the LaTeX Project Public License, either version 1.3 % - of this license or (at your option) any later version. % - The latest version of this license is in % - http://www.latex-project.org/lppl.txt % - and version 1.3 or later is part of all distributions of LaTeX % - version 2005/12/01 or later. % - % - This work has the LPPL maintenance status `maintained'. % - % - The Current Maintainer of this work is Clemens Niederberger. % - % - This work consists of the files chemnum.sty, chemnum_de.tex, chemnum_en.tex, % - chemnum-codehelper.tex, scheme-tmp.eps, scheme-bla.eps, README and the % - derived files chemnum_de.pdf and chemnum_en.pdf % - % - in order to compile this document you need the class `cnpkgdoc' with is % - available under the LPPL here: https://bitbucket.org/cgnieder/cnpkgdoc/ % - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \RequirePackage[textgreek]{chemnum} \documentclass[DIV11,toc=index]{cnpkgdoc} \docsetup{ pkg = chemnum, language = de, code-box = {backgroundcolor=cnpkgcodebg,skipabove=1ex,skipbelow=1ex} } \addcmds{ @m,arrow,bf,ch,chemfig,chemname,cmpd,cmpdinit,cmpdref,cmpdreset,cmpdsetup, CNlabel,CNlabelnoref,CNref,CNlabelsub,CNlabelsubnoref,CNrefsub, color,compound,compoundprefix,compoundsuffix,declarecompound,fcite, includegraphics,jobname,midrule,penalty,psfrag,renewcommand,schemename, schemestart,schemestop,selectlanguage,setarrowoffset,setatomsep,setcompoundsep, setdoublesep,section,sf,subsection,subsubsection,tableofcontents, texorpdfstring,textcolor,theffbibliography,uline} \usepackage[ngerman,german,naustrian,austrian,english,british,american,canadian,frenchb,canadien,spanish,italian]{babel} \usepackage{textcomp,longtable,tabu,booktabs,chemscheme,hologo} \usepackage[iupac=strict]{chemmacros} \DeclareChemIUPAC\a{\textalpha} \DeclareChemIUPAC\b{\textbeta} \usepackage{chemfig} \usepackage[runs=2]{auto-pst-pdf} \begin{filecontents}{index_de.ist} preamble "\\begin{theindex}\n Abschnitts\\\"{u}berschriften werden \\textbf{fett}, Pakete \\textsf{serifenlos}, Befehle \\textcolor{code}{braun} und Keys \\textcolor{key}{gr\\\"{u}n} dargestellt.\\newline\n\n" heading_prefix "{\\bfseries " heading_suffix "\\hfil}\\nopagebreak\n" headings_flag 1 delim_0 "\\dotfill " delim_1 "\\dotfill " delim_2 "\\dotfill " delim_r "--" suffix_2p "\\nohyperpage{\\,f.}" suffix_3p "\\nohyperpage{\\,ff.}" \end{filecontents} \let\prog\textsc \let\name\textsc \let\CNversion\cnpkgdocpkgversion \let\CNdate\cnpkgdocpkgdate \def\Wikipedia{\textup{\libertineGlyph{W.alt}}\kern-.8pt\textsc{ikipedia}} \cmpdinit*{a,aa,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,benzene,r,s,t,{1,3-dichlorocyclohexanole}} \TitlePicture{% \cmpdinit*{glucose.alpha, glucose.beta, glucose.chain} \cmpd*[sub-counter = greek]{glucose.alpha, glucose.beta}\cmpd*{glucose.chain} \setatomsep{2em} \definesubmol{x}{(-[4]H)(-[0]OH)} \definesubmol{y}{(-[0]H)(-[4]HO)} \begin{scheme}[h] \centering\small \schemestart \chemfig{?(-[:-170]HO)-[:-50](-[:170]HO)-[:10](-[:-55,0.7]OH)-[:-10](-[6,0.8]OH)-[:130]O-[:-170]?(-[:150,0.7]-[2,0.7]OH)} \arrow(alpha--chain){<=>} \chemfig{[2]OH-[3]-!x-!x-!y-!x-=[1]O} \arrow(--beta){<=>} \chemfig{?(-[:-170]HO)-[:-50](-[:170]HO)-[:10](-[:-55,0.7]OH)-[:-10](-[:10]OH)(-[6,,,,draw=none]\vphantom{OH})-[:130]O-[:-170]?(-[:150,0.7]-[2,0.7]OH)} \arrow(@chain--chainlabel){0}[-90,.2] \normalsize\cmpd[cmpd-delim]{glucose.chain} \arrow(@chainlabel--){0}[,2.5] \normalsize\cmpd[cmpd-delim]{glucose.beta} \arrow(@chainlabel--){0}[180,2.3] \normalsize\cmpd[cmpd-delim]{glucose.alpha} \schemestop \caption{Das \a- und das \b-Anomer von \D-Glucose \cmpd[list-delim,list-lang=DE]{glucose.alpha,glucose.beta} stehen in L\"osung \"uber die offenkettige Form \cmpd[cmpd-delim]{glucose.chain} im Gleichgewicht.} \end{scheme}} \makeindex \begin{document} \selectlanguage{ngerman}\cmpdreset \section{Ein sehr kurzes Readme} \chemnum \CNversion\ steht unter der \LaTeX\ Project Public License Version 1.3 oder später. (\url{http://www.latex-project.org/lppl.txt}) \chemnum ruft intern die Pakete \paket*{expl3} und \paket{xparse} auf. \paket{xparse} ist Teil des \paket{l3packages}-Bundles, \paket*{expl3} ist Teil des \paket{l3kernel}-Bundles. Das heißt, \chemnum benötigt \LaTeX3-Un\-ter\-stüt\-zung. \chemnum benötigt außerdem die Pakete \paket{etoolbox} und \paket{psfrag} und entweder das Paket \paket{textgreek} oder das Paket \paket{bm}, abhängig von den Paketoptionen (siehe Abschnitt \ref{sec:package_options}). \section{Neues und ein Wort der Entschuldigung} \subsection{Version 0.4} Mit dem Update auf v0.4 hat sich einiges bei den Optionen getan. Es gibt ein paar neue, ein paar von den alten haben andere Namen. Sie haben einheitlichere Namen erhalten, die meines Erachtens intuitiver ihre jeweilige Funktion widerspiegeln. Dadurch kann es sein, dass Ihre mit einer früheren Version von \chemnum erstellten Dokumente nicht mehr reibungslos kompilieren. Dafür möchte ich mich entschuldigen. \chemnum befindet sich noch in der Entwicklungsphase. Ist erst einmal v1.0 erreicht, wird es solche Änderungen nicht mehr\footnote{oder nur in größten Ausnahmefällen} geben. Diese Optionen haben neue Namen: \begin{center} \begin{tabular}{ll}\toprule \bfseries alter Name & \bfseries neuer Name \\\midrule \key{cmpd-sep} & \key{sub-output-sep} \\ \key{sub-marker} & \key{sub-input-sep} \\ \key{sub-range-sep} & \key{subrange-output-sep} \\ \key{sub-range-marker} & \key{subrange-input-sep} \\ \key{strict} & \key{init-strict} \\ \key{sub-init} & \key{init-sub} \\\bottomrule \end{tabular} \end{center} Diese Optionen sind neu: \begin{center} \begin{tabular}{ll}\toprule \bfseries Option & \bfseries Info \\\midrule \key{sublist-output-sep} & Aufzählungszeichen in Labeln wie \cmpd{bsp.{one,two}}, siehe Seite \pageref{sssec:list-output-sep}. \\ \key{sublist-input-sep} & Eingabe von Labeln wie \cmpd{bsp.{one,two}}, siehe Seite \pageref{sssec:list-input-sep}. \\ \key{init-input-sep} & Eingabe bei \cmd{cmpdinit}, siehe Seite \pageref{sssec:init-input-sep}. \\ \key{hyper-use} & Verwendung von Hyperlinks, siehe Seite \pageref{sec:hyperref}. \\ \key{hyper-target} & \\ \key{hyper-link} & \\ \key{ref-style} & Darstellung von Labels mit \cmd{cmpdref}, siehe Seiten \pageref{ssec:cmpdref} und \pageref{ssec:schriftstil}. \\\bottomrule \end{tabular} \end{center} Ebenfalls neu ist die Art und Weise, wie Sublabel-Listen und -Bereiche eingegeben werden. Der Option \key{sub-list} entfällt deshalb. Näheres siehe Abschnitt \ref{ssec:sub_ranges}. Dann gibt es nun die Möglichkeit, klickbare Links zu den Labeln herzustellen, vorausgesetzt Sie haben \paket{hyperref} eingebunden, siehe Abschnitt \ref{sec:hyperref}. \subsection{Version 0.5} Ab v0.5 gibt es die Option \key{ref-pos}, die Ihnen erlaubt, die Positionierungs-Optionen des Befehls \cmd{psfrag} zu ändern, der von \cmd{cmpdref} intern verwendet wird, siehe S.\,\pageref{ssec:marker_in_bildern}. \achtung{Die Reihenfolge der optionalen Argumente des Befehls \cmd{cmpdref} hat sich geändert, siehe S.\,\pageref{ssec:cmpdref}!} \section{Paketoptionen}\label{sec:package_options}\secidx{Paketoptionen} \chemnum hat eine Paketoption. \begin{beschreibung} \Option{textgreek}{artemisia/\default{cbgreek}/euler/false} Default: \code{false} \end{beschreibung} Damit können Sie sowohl einen der drei Stile des \paket{textgreek}-Pakets wählen\footnote{Zu Details siehe Dokumentation des \paket*{textgreek}-Pakets.} oder \chemnum ohne \paket{textgreek} laden. Dieses Dokument wurde mit \verb+\usepackage[textgreek]{chemnum}+ gesetzt. \secidx*{Paketoptionen} \section{Motivation} Soweit mir bekannt ist, gab es bislang drei Pakete, die das Nummerieren von Verbindungen erleichtern sollen. Sie alle haben ihre Schwächen. Das erste, \paket{chemcono}, hat für diesen Zweck Bibliographie-Befehle umdefiniert. Dort müs\-sen Verbindungen in einer Art Literaturliste definiert werden. Dadurch kann dann im Text auf sie referenziert werden. Da es die "`Verbindungs-Bibliothek"' immer mit ausgibt, schlägt der Paket-Autor folgendes vor: \begin{zitat}[Stefan Schulz] After compilation and printout, discard the last page. \end{zitat} Ganz offensichtlich ist das keine perfekte Lösung. Das zweite, \paket{chemcompounds}, ist enstanden, weil der Paket-Autor ebenfalls mit den Schwä\-chen von \paket{chemcono} nicht mehr arbeiten wollte. Bei der Erstellung des Pakets hielt er sich stark an den gleichen prinzipiellen Mechanismus wie \paket{chemcono}. \begin{zitat}[Stephan Schenk] When taking a closer look at the chemcono package, I realised that the only thing one has to do is to get rid of everything which produces text. Thus, as a basis I used the mechanism of \verb=\bibitem= and \verb=\cite= in pretty much the same way as \paket{chemcono} does by extracting the corresponding code from \verb=article.cls= and \verb=latex.ltx= but deleting any unnecessary commands producing output. I also introduced several lines of code to make the printing of the compound names more customisable. \end{zitat} Manche Schwächen hat auch dieses Paket: \begin{enumerate} \item Verbindungen müssen in der Regel mit \verb=\declarecompound= deklariert werden. Sie müs\-sen es auf jeden Fall, wenn man Label der Art \cmpd{bsp.one} haben möchte. Dann muss man die La\-bel sogar von Hand vergeben, was den Sinn einer automatischen Nummerierung untergräbt. \item Das Layout lässt sich nicht einzeln ändern, sondern nur für alle Label. \item Die Nummerierung kann nicht zurückgesetzt werden. Obwohl das in der allermeisten Fällen \emph{weder nötig noch zu empfehlen ist}, kann es Einzelfälle geben, in denen solches Verhalten gewünscht ist. \item Eine Liste mehrerer Verbindungen \verb=\compound{a,b,c}= kann nicht oder nur um\-ständ\-lich eigenen Vorstellungen angepasst werden. \end{enumerate} Dann gibt es noch \paket{bpchem}, das Befehle ähnlich den Befehlen \verb=\label= und \verb=\ref= zur Ver\-fü\-gung stellt: \verb=\CNlabel{}=, \verb=\CNlabelnoref{}= und \verb=\CNref{}=. Außerdem hat es Befehle für Sublabel: \verb=\CNlabelsub{}{}=, \verb=\CNlabelsubnoref{}{}= und \verb=\CNrefsub{}{}=. Damit ist es flexibler als die anderen, stellt allerdings kaum Möglichkeiten zur Personalisierung bereit, Listen sind nicht möglich und die Tatsache, dass es verschiedene Befehle für Label und Label mit Sublabeln gibt, ist ebenfalls nicht die beste Lösung. \chemnum soll diese Schwächen beheben. Dafür wurden alle Befehle vollständig neu geschrieben. Allerdings wurden Ideen von \paket{chemcompounds} aufgegriffen was Dar\-stel\-lungs\-mög\-lich\-kei\-ten wie Begrenzer \usw betrifft. Wenn Ihnen irgendwelche fehlenden Features auf"|fallen, geben Sie mir bitte Bescheid, indem Sie mir eine E-Mail senden. \section{Verbindungen Nummerieren}\label{sec:nummerieren} \subsection{Basisbefehl}\secidx{Basisbefehl}\cmpdreset Der eigentliche Befehl des Pakets ist \begin{beschreibung} \Befehl{cmpd}{