Anscheinend läßt sich eine chemische Formel mit dem \chemfig-Makro innerhalb einer \tikzpicture-Umgebung immer dann nicht ausgeben, wenn man den Knoten mit der Option text width versieht. Letztere ist aber erforderlich, um die Box über den gesamten Satzspiegel darzustellen (siehe Box 1).

Ohne die Option text width läßt sich jedoch eine chemische Formel mit dem \chemfig-Makro durchaus darstellen. Allerdigs wird dann die Box nicht über den gesamten Satzspiegel dargestellt. Ein Zeilenumbruch mit \par läßt sich auch nicht setzen (siehe Box 2).

Das Chemie-Makro mhchem scheint weniger problematisch zu sein. Hier läßt sich die Breite der Box einstellen und auch ein Zeilenumbruch realisieren, ohne dass die Formel fehlerhaft dargestellt wird. Anscheinend wird die Ausgabe des \ce-Kommandos als Text aufgefasst (siehe Box 3).

alt text

\documentclass{scrartcl}
\usepackage[%
   paperwidth=17cm,paperheight=24cm, 
    top=21mm,bottom=18mm,outer=28mm,inner=18mm,foot=12.5mm,head=9mm,
   %showframe
   ]{geometry}
\usepackage{chemfig, mhchem}
\renewcommand*\printatom[1]{\ensuremath{\mathsf{#1}}}

\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usepackage{color}

\begin{document}

\begin{flushleft}
\begin{tikzpicture}[show background rectangle]
\node[align=justify, text width=11.7cm, inner sep=.5em]{
\par Hier steht ein langer Text, der am Ende der Zeile umgebrochen wird. Das sollte auch funktionieren, wenn die Breite der Box eingestellt werden kann. Nur leider funktioniert das nicht, wenn eine chemische Formel mit mit dem Paket \verb+chemfig+ dieser Box gesetzt wird.\par\vspace{6pt}
Grundgerüst:\qquad\chemfig{C-C=O}\par\vspace{6pt}
Setzt man eine chemische Formel mit dem Paket \verb+mchchem+ läßt sie sich fehlerfrei darstellen.\par\vspace{6pt}
Propan:\qquad\ce{H3C-CH2-CH3}
};
\node [xshift=-1cm,yshift=-.7ex,overlay,fill=black, above right] at (current bounding box.north)
{\textcolor{white}{\textbf{\sffamily Box 1}}}; 
\end{tikzpicture}
\end{flushleft}
\par\vspace{12pt}

\begin{flushleft}
\begin{tikzpicture}[show background rectangle]
\node[inner sep=.5em]{
Essigsäure\hspace{1cm}\chemfig{H_3C-C(-[7]OH)=[1]O}\par\vspace{6pt}
Propan\hspace{1cm}\ce{H3C-CH2-CH3}
}; 
\node [xshift=-1cm,yshift=-.7ex,overlay,fill=black, above right] at (current bounding box.north)
{\textcolor{white}{\textbf{\sffamily Box 2}}}; 
\end{tikzpicture}
\end{flushleft}
\par\vspace{12pt}

\begin{flushleft}
\begin{tikzpicture}[show background rectangle]
\node[ text width=11.7cm, inner sep=.5em]{
\par Propan\hspace{18pt}\ce{H3C-CH2-CH3}\par\vspace{6pt}
Butan\hspace{18pt}\ce{H3C-CH2-CH2-CH3}
}; 
\node [xshift=-1cm,yshift=-.7ex,overlay,fill=black, above right] at (current bounding box.north)
{\textcolor{white}{\textbf{\sffamily Box 3}}}; 
\end{tikzpicture}
\end{flushleft}

\end{document}

gefragt 12 Sep '19, 11:24

Delorian's gravatar image

Delorian
66912333
Akzeptiert-Rate: 17%

bearbeitet 12 Sep '19, 11:41

2

Warum benutzt Du für die Boxen nicht das Paket tcolorbox? Im Abschnitt 10.2.1 Boxed Title Placement der Dokumentation findest Du Optionen für die Ausrichtung des Titels.

(13 Sep '19, 00:18) Bartman

Das Problem ist, dass chemfig TikZ verwendet und man tikzpicture nicht schachteln kann. Die korrekte Lösung wäre deshalb, den Inhalt des Knotens außerhalb der tikzpicture-Umgebung in einer Box zu speichern und dann mittels \usebox zu setzen.

Für diesen einen Spezialfall, der hier vorliegt ist auch eine Korrektur in Arbeit (https://github.com/pgf-tikz/pgf/pull/745), aber generell ist das Schachteln von tikzpicture nicht zu empfehlen und auch nicht offiziell unterstützt.

\documentclass{scrartcl}
\usepackage[%
   paperwidth=17cm,paperheight=24cm, 
    top=21mm,bottom=18mm,outer=28mm,inner=18mm,foot=12.5mm,head=9mm,
   %showframe
   ]{geometry}
\usepackage{chemfig, mhchem}
\renewcommand*\printatom[1]{\ensuremath{\mathsf{#1}}}

\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usepackage{color}
\newsavebox{\nodebox}

\begin{document}

\begin{lrbox}{\nodebox}
  \begin{minipage}{11.7cm}
    Hier steht ein langer Text, der am Ende der Zeile umgebrochen wird. Das sollte auch funktionieren, wenn die Breite der Box eingestellt werden kann. Nur leider funktioniert das nicht, wenn eine chemische Formel mit mit dem Paket \verb+chemfig+ dieser Box gesetzt wird.\par\vspace{6pt}
    Grundgerüst:\qquad\chemfig{C-C=O}\par\vspace{6pt}
    Setzt man eine chemische Formel mit dem Paket \verb+mchchem+ läßt sie sich fehlerfrei darstellen.\par\vspace{6pt}
    Propan:\qquad\ce{H3C-CH2-CH3}
  \end{minipage}
\end{lrbox}

\begin{flushleft}
\begin{tikzpicture}[show background rectangle]
\node[align=justify, text width=11.7cm, inner sep=.5em]{\usebox{\nodebox}};
\node [xshift=-1cm,yshift=-.7ex,overlay,fill=black, above right] at (current bounding box.north)
{\textcolor{white}{\textbf{\sffamily Box 1}}}; 
\end{tikzpicture}
\end{flushleft}

\end{document}

alt text

Permanenter link

beantwortet 13 Sep '19, 00:20

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 13 Sep '19, 00:21

Die Anregung von @Bartman habe ich angenommen und eine Box mit dem Paket tcolorbox gebastelt. Hier das Ergebnis:

\documentclass{scrartcl}
\usepackage[%
   paperwidth=17cm,paperheight=24cm, 
    top=21mm,bottom=18mm,outer=28mm,inner=18mm,foot=12.5mm,head=9mm,
   %showframe
   ]{geometry}
\usepackage{chemfig}
\usepackage[version=4]{mhchem}
\renewcommand*\printatom[1]{\ensuremath{\mathsf{#1}}}

\usepackage[most]{tcolorbox}
\tcbset{colback=white,colframe=black,fonttitle={\bfseries\sffamily},sharp corners}

\begin{document}

\begin{flushleft}
\begin{tcolorbox}[enhanced,attach boxed title to top center={yshift=-3mm,yshifttext=-1mm},colbacktitle=black,
            title=Box 1,boxed title style={size=small,sharp corners}]
\vspace{6pt} Hier steht ein langer Text, der am Ende der Zeile umgebrochen wird.  Die Breite der Box stellt sich über den Satzspeigel von selbst ein. Die chemische Formel mit \verb+chemfig+ wird auch  korrekt gesetzt.\par\vspace{6pt}
Grundgerüst:\qquad\chemfig{C-C=O}
\par\vspace{6pt}
Setzt man eine chemische Formel mit dem Paket \verb+mchchem+ wird sie hier auch fehlerfrei dargestellt.
\par\vspace{6pt}
Propan:\qquad\ce{H3C-CH2-CH3} 
\end{tcolorbox}
\end{flushleft}

\end{document}
Permanenter link

beantwortet 14 Sep '19, 10:30

Delorian's gravatar image

Delorian
66912333
Akzeptiert-Rate: 17%

bearbeitet 14 Sep '19, 10:32

Du kannst die Nummerierung Deiner Boxen auch automatisieren. Lies dazu im Abschnitt 5.1 Numbered Boxes.

(17 Sep '19, 23:54) Bartman
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:

×731
×41
×26
×7

gestellte Frage: 12 Sep '19, 11:24

Frage wurde gesehen: 6,173 Mal

zuletzt geändert: 17 Sep '19, 23:54