Hallo,

ich weis das der Autor des Paketes chemnum hier regelmäßig mitliest und wollte so meine Frage zu dem Paket stellen, weil vllt auch noch andere vor dem gleichen Problem stehen.

Die Situation: Ich schreibe ein längeres Protokoll mit mehreren Grafiken in denen chemische Strukturen dargestellt sind. Durch chemnum ist es ja nun möglich die Verbindungen in den Grafiken automatisch zu nummerieren. Alle Verbindungen haben einen TMP-Marker mit fortlaufender Nummer. Zu jedem Marker setze ich vor der Grafik einen replacecmpd{TMP...} Befehl. Die Verbindungen werden auch nummeriert.

Das Problem: Ich hatte eine Struktur vergessen und wollte diese nachträglich einfügen. Die Marker der anderen Verbindungen hatten die Nummern: TMP15,16...23. Die neue Struktur sollte zw. TMP18 und TMP19 eingefügt werden. Ich gab der neuen Verbindung den Marker TMP24 (weil fortlaufend nummeriert). Also stand die TMP24 zw. der TMP18 und TMP19. Das Problem ist nun, dass die neue Struktur keine Nummer bekommt. Sie wird einfach übergangen.

Wie kann man Strukturen die nachträglich eingefügt werden, fortlaufend nummerieren?

Ich habe zwei Beispiele mitgebracht.

Beispiel 1: test.tex und test.pdf Hier werden die Verbindungen nach einander durch nummeriert, wobei immer wieder Zahlen ausgelassen werden. So fehlt die 15 und die 20. Des weiteren benötige ich für die "Abbildung 3" in der 8 Verbindungen zu sehen sind 10 replacecmd Befehle

Beispiel 2: test2.tex und test2.pdf Hier habe ich eine Abb. 2 aus Beispiel ans an den Anfang gesetzt und die anderen Beiden folgen lassen. Es werden die ersten vier Verbindungen nicht nummeriert und der Rest behält seine alten Nummern.

Da ich hier keine Upload funktion finde hier die Codes:

Beispiel 1

Open in writeLaTeX
\documentclass[a4paper, 11pt]{scrartcl} 
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[format=hang,labelfont=bf,font=small,margin=10pt]{caption}
\usepackage{graphicx} %%Zum Laden von Grafiken
\usepackage{chemnum}
\usepackage[crop=off,runs=2]{auto-pst-pdf}

\begin{document}

\section{Überschrift}

\begin{figure}[h]
    \centering
        \replacecmpd{TMP11}\replacecmpd{TMP12}\replacecmpd{TMP13}\replacecmpd{TMP14}
        \includegraphics[width=0.50\textwidth]{SyntheseRuIII}
    \caption{bild2}
    \label{fig:SyntheseRuIII}
\end{figure}

\begin{figure}[h]
    \centering
    \replacecmpd{bla}\replacecmpd{bla2}\replacecmpd{bla3}\replacecmpd{bla4}\replacecmpd{bla5}\replacecmpd{bla6}\replacecmpd{bla7}\replacecmpd{bla8}\replacecmpd{bla9}\replacecmpd{bla10}
        \includegraphics[width=0.50\textwidth]{SyntheseRu}
    \caption{bild1}
    \label{fig:SyntheseRu}
\end{figure}

\begin{figure}[h]
    \centering
         \replacecmpd{TMP16}\replacecmpd{TMP17}\replacecmpd{TMP18}\replacecmpd{TMP19}\replacecmpd{TMP21}\replacecmpd{TMP22}\replacecmpd{TMP23}\replacecmpd{TMP24}\replacecmpd{TMP25}\replacecmpd{TMP26}
        \includegraphics[width=0.50\textwidth]{Binole}
    \caption{bild3}
    \label{fig:Binole}
\end{figure}

\end{document}

Beispiel 2

Open in writeLaTeX
    \documentclass[a4paper, 11pt]{scrartcl} 
    \usepackage[ngerman]{babel}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[format=hang,labelfont=bf,font=small,margin=10pt]{caption}
    \usepackage{graphicx} %%Zum Laden von Grafiken
    \usepackage{chemnum}
    \usepackage[crop=off,runs=2]{auto-pst-pdf}

    \begin{document}
\section{Überschrift}
\replacecmpd{TMP11}\replacecmpd{TMP12}\replacecmpd{TMP13}\replacecmpd{TMP14}
\begin{figure}[h]
    \centering
        \includegraphics[width=0.50\textwidth]{SyntheseRuIII}
    \caption{bild2}
    \label{fig:SyntheseRuIII}
\end{figure}

\replacecmpd{bla}\replacecmpd{bla2}\replacecmpd{bla3}\replacecmpd{bla4}\replacecmpd{bla5}\replacecmpd{bla6}\replacecmpd{bla7}\replacecmpd{bla8}\replacecmpd{bla9}\replacecmpd{bla10}
\begin{figure}[h]
    \centering
        \includegraphics[width=0.50\textwidth]{SyntheseRu}
    \caption{bild1}
    \label{fig:SyntheseRu}
\end{figure}

\replacecmpd{TMP16}\replacecmpd{TMP17}\replacecmpd{TMP18}\replacecmpd{TMP19}\replacecmpd{TMP21}\replacecmpd{TMP22}\replacecmpd{TMP23}\replacecmpd{TMP24}\replacecmpd{TMP25}\replacecmpd{TMP26}
\begin{figure}[h]
    \centering
        \includegraphics[width=0.50\textwidth]{Binole}
    \caption{bild3}
    \label{fig:Binole}
\end{figure}

\end{document}

Die Bilder braucht ihr natürlich auch noch: http://www.file-upload.net/download-9336336/Binole.eps.html http://www.file-upload.net/download-9336337/SyntheseRu.eps.html http://www.file-upload.net/download-9336338/SyntheseRuIII.eps.html

gefragt 05 Aug '14, 23:40

Cornhulio's gravatar image

Cornhulio
13113
Akzeptiert-Rate: 0%

bearbeitet 06 Aug '14, 23:33

cgnieder's gravatar image

cgnieder
22.1k253463

Willkommen auf der TeXwelt! Kannst Du denn gezielt nur TMP24 ersetzen? Am besten teste das mal mit psfrag. (Der gesamte Marker-Ersetzungs-Mechanismus wird nämlich nicht von chemnum bereitgestellt, sondern von psfrag.) Einfach mal testen: lade psfrag statt chemnum in einem Testdokument und dann probiere mal \psfrag{TMP24}{xxxx} statt \replacecmpd vor \includegraphics.

(05 Aug '14, 23:51) cgnieder

Hi ich habe das gemacht wie beschrieben: Nur eine Verbindung mit dem Marker TMP24. Und der Marker wurde problemlos ersetzt.

(06 Aug '14, 00:05) Cornhulio

Hmm, ok. Dann muss ich mir wohl eine Test-Datei erstellen und mal sehen, ob ich was herausfinde

(06 Aug '14, 00:13) cgnieder

Ich habe jetzt mal eine Test-Datei erstellt, in der die Reihenfolge der Marker durcheinander ist, und kann Dein Problem nicht reproduzieren. Alles funktioniert bei mir bestens

(06 Aug '14, 11:21) cgnieder
1

Mit anderen Worten: ein Minimalbeispiel wird benötigt.

(06 Aug '14, 11:25) cgnieder

Ich glaube, Du hast nicht völlig verstanden, wie \replacecmpd funktioniert bzw. wie ich mir eine Verwendung bei der Implementierung vorgestellt habe. (Letztlich hab ich mir das von chemscheme abgeguckt, wo Joseph Wright etwas ähnliches für die Pakete chemcompounds und bpchem eingebaut hatte.)

Der Gedanke dahinter ist der folgende: für jedes EPS-Bild setzt Du im Bild Textmarker TMP1, TMP2, ..., die Zählung jeweils beginnend mit der 1. Das Argument von \replacecmpd hat nichts mit diesen temporären Markern zu tun! Es ist die ID, die Du auch in \cmpd verwendest, um die betreffende Verbindung eindeutig zu identifizieren. Sinnvollerweise ist das etwas, was mit der Verbindung zu tun hat, z.B. ihr Name: \replacecmpd{Ethanol} oder ähnlich. Eine typische Verwendung sähe so aus:

Open in writeLaTeX
\begin{scheme}% oder `figure` oder `center` oder...
  \replacecmpd{label-das-eindeutig-fuer-die-verbindung-bla-ist}% ersetzt `TMP1'
  \replacecmpd{label-das-eindeutig-fuer-die-verbindung-blub-ist}% ersetzt `TMP2'
  \includegraphics{foo-bar.eps}
\end{scheme}

Wichtig dabei ist, dass alle \replacecmpd mit der EPS-Datei innerhalb einer Gruppe sind. Da jede Umgebung implizit eine Gruppe bildet, ist das durch eine Umgebung gewährleistet. Warum ist das wichtig? Die Zahl nach TMP wird mit jedem Aufruf von \replacecmpd lokal (im TeX-Sinn) um eins erhöht. Damit kann man bei jeder Abbildung wieder bei 1 anfangen, ohne dass man sich um frühere Abbildungen kümmern muss. Man muss so bei der Erstellung der EPS nicht darauf Rücksicht nehmen, was man bei anderen EPS gemacht hat, wodurch mögliche Fehleranfälligkeit natürlich deutlich sinkt.

Wenn man \replacecmpd außerhalb der Umgebung einsetzt, geht die Zählung beim nächsten Bild einfach weiter, man verliert also die Unabhängigkeit. Wenn Du jetzt auch noch Gleitumgebungen wie die figure-Umgebung verwendest, wo man nicht vorher weiß, wo sie platziert wird, aber \replacecmpd außerhalb davon setzt, so dass es nicht mitgleitet, dann weiß ich nicht was passiert (dazu kenne ich die Innereien von psfrag zu wenig. So war es einfach nicht gedacht. (Übrigens: wenn man nur [h] als Gleit-Parameter angibt, wird er von LaTeX automatisch mit [ht] ersetzt, das wird aber auch jedes Mal in der log-Datei mit einer Warnung vermerkt.)

Wenn Du die Zählung im EPS nicht bei 1 beginnst, sondern wie bei SyntheseRuIII.eps bei 11, dann verlierst Du den Automatismus und musst die Tags explizit angeben:

Open in writeLaTeX
\replacecmpd[tag=TMP11]{foo-bar-baz}

Man könnte auch den internen Count vorher auf 10 setzen,

Open in writeLaTeX
\ExplSyntaxOn
\int_set:Nn \l__chemnum_compound_replace_int {10}
\ExplSyntaxOff

aber das ist ein Hack, den ich nicht empfehlen würde. Der Doppelunterstrich bei \l__ bedeutet nämlich, dass es sich hier um eine interne Variable handelt, auf deren Existenz man sich nicht verlassen kann. (Falls ich den Code je ändere, weiß ich mit Sicherheit nicht mehr, dass ich hier etwas vorgeschlagen habe, das interne Variablen verwendet.) Meine Entwicklerversion hat dafür schon eine offizielle Option, die chemnum beim nächsten Update dann haben wird.

Die folgenden Beispiele zeigen, dass bei richtiger Verwendung alle Marker ersetzt werden:

Open in writeLaTeX
\begin{center}
  \includegraphics[width=.45\textwidth]{SyntheseRuIII}
  \replacecmpd[tag=TMP11]{eins}
  \replacecmpd[tag=TMP12]{zwei}
  \replacecmpd[tag=TMP13]{drei}
  \replacecmpd[tag=TMP14]{vier}
  \includegraphics[width=.45\textwidth]{SyntheseRuIII}
\end{center}

alt text

Open in writeLaTeX
\begin{center}
  \includegraphics[height=.4\textheight]{SyntheseRu}
  \replacecmpd{bla}
  \replacecmpd{bla2}
  \replacecmpd{bla3}
  \replacecmpd{bla4}
  \replacecmpd{bla5}
  \replacecmpd{bla6}
  \replacecmpd{bla7}
  \replacecmpd{bla8}
  \replacecmpd{bla9}
  \replacecmpd{bla10}
  \includegraphics[height=.4\textheight]{SyntheseRu}
\end{center}

alt text

Open in writeLaTeX
\begin{center}
  \includegraphics[width=.45\textwidth]{Binole}
  \replacecmpd[tag=TMP16]{eins}
  \replacecmpd[tag=TMP17]{zwei}
  \replacecmpd[tag=TMP18]{drei}
  \replacecmpd[tag=TMP19]{vier}
  \replacecmpd[tag=TMP21]{fuenf}
  \replacecmpd[tag=TMP22]{sechs}
  \replacecmpd[tag=TMP23]{sieben}
  \replacecmpd[tag=TMP24]{acht}
  % \replacecmpd[tag=TMP25]{neun}
  % \replacecmpd[tag=TMP26]{zehn}
  \includegraphics[width=.45\textwidth]{Binole}
\end{center}

alt text


Nachtrag Ich habe soeben (2014/08/08) v1.1 auf CTAN hochgeladen. Damit kannst Du das ganze dann bequemer handhaben, da die neue Option replace-tag-nr eingeführt wurde:

Open in writeLaTeX
% arara: pdflatex: { shell: on }
\documentclass[a4paper, 11pt]{scrartcl} 
\usepackage{graphicx}
\usepackage{chemnum}[2014/08/08]
\usepackage[crop=off,runs=2]{auto-pst-pdf}

\begin{document}

\begin{center}
  \setchemnum{replace-tag-nr=11}
  \replacecmpd{eins}% TMP11
  \replacecmpd{zwei}% TMP12
  \replacecmpd{drei}% TMP13
  \replacecmpd{vier}% TMP14
  \includegraphics[width=.45\textwidth]{SyntheseRuIII}
\end{center}

\begin{center}
  \replacecmpd{bla}%   TMP1
  \replacecmpd{bla2}%  TMP2
  \replacecmpd{bla3}%  TMP3
  \replacecmpd{bla4}%  TMP4
  \replacecmpd{bla5}%  TMP5
  \replacecmpd{bla6}%  TMP6
  \replacecmpd{bla7}%  TMP7
  \replacecmpd{bla8}%  TMP8
  \replacecmpd{bla9}%  TMP9
  \replacecmpd{bla10}% TMP10
  \includegraphics[height=.4\textheight]{SyntheseRu}
\end{center}

\begin{center}
  \setchemnum{replace-tag-nr=16}
  \replacecmpd{fuenf}%  TMP16
  \replacecmpd{sechs}%  TMP17
  \replacecmpd{sieben}% TMP18
  \replacecmpd{acht}%   TMP19
  \setchemnum{replace-tag-nr=21}
  \replacecmpd{neun}%   TMP21
  \replacecmpd{zehn}%   TMP22
  \replacecmpd{elf}%    TMP23
  \replacecmpd{zwoelf}% TMP24
  \includegraphics[width=.45\textwidth]{Binole}
\end{center}

\end{document}
Permanenter link

beantwortet 07 Aug '14, 11:37

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

bearbeitet 08 Aug '14, 17:04

Hi

ich danke dir! Ich hoffe du kannst mir verzeihen, dass ich dein Paket so falsch gebraucht habe. Die Option [tag=TMPXX] setzen zu müssen um fortlaufend eine Nummerierung über alle EPS Dateien zu erhalten habe ich leider nicht gelesen. Mit dieser Option bekomme ich es nun so hin wie ich es möchte und es auch von dir angedacht wurde. Ich habe die replacecmd Befehle im Endeffekt so gesetzt wie es für mich funktioniert hat.

Das das TMPXX in replacecmd{TMPXX} keinen Einfluss hat auf die eigentliche Nummerierung war mir klar. Ich finde es nur einfacher jeder Verbindung die Kombination TMP+Zahl zugeben als mir einen Names oder ähnliches auszudenken.

(07 Aug '14, 20:14) Cornhulio

@Cornhulio Nicht nötig, Dich zu entschuldigen :) Ich kam beim Erstellen nie auf die Idee, dass man die Platzhalter im ganzen Dokument fortlaufend haben können wollte...

(08 Aug '14, 00:38) cgnieder

@Cornhulio mit der neuen v1.1, die bald verfügbar sein wird, wirds leichter für Dich, siehe meine aktualisierte Antwort

(08 Aug '14, 17:23) cgnieder

Hi ich hab das Update nicht gefunden auf CTAN?!? Was ich gefunden habe war/ist nur die "aqlte" Version 1.0b

(08 Aug '14, 21:18) Cornhulio

@Cornhulio warte zwei Tage oder so :) Ich hab's erst hochgeladen, das CTAN-Team muss den Upload erst noch installieren. (Und dann dauert's auch noch in der Regel ein/zwei Tage, bis man die neue Version über den tlmgr in TeX Live installieren kann, bei MiKTeX vielleicht ein bisschen länger.)

(08 Aug '14, 21:25) cgnieder

@Clemens alles klar, dann muss ich mich noch gedulden. Bei MiKTeX sind nur die Pakete ab dem 02. August verfügbar. Heißt noch gut 5 bis 6 Tage warten :_(

(08 Aug '14, 22:06) Cornhulio

@Corhulio liegt daran, dass MiKTeX von einer einzigen Person, Christian Schenk, aktuell gehalten und maintained wird. Dafür ist das ja schon recht flott :)

(08 Aug '14, 22:13) cgnieder
Ergebnis 5 von 7 show 2 more comments
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×26
×10

gestellte Frage: 05 Aug '14, 23:40

Frage wurde gesehen: 12,190 Mal

zuletzt geändert: 08 Aug '14, 22:13