Gibt es eine Möglichkeit einen Zeilenumbruch in der Beschriftung für Reaktionspfeile bei dem Paket chemfig einzufügen?

gefragt 24 Jul '13, 08:38

Bettina's gravatar image

Bettina
66551923
Akzeptiert: 83%

bearbeitet 25 Sep '13, 12:52

saputello's gravatar image

saputello
19.9k33157


Du könntest den Inhalt des Labels in eine \parbox setzen:

Öffne in Overleaf
\documentclass{article}
\usepackage{chemfig}
\begin{document}

\schemestart
 A \arrow{->[\parbox{5cm}{\centering a\\b}][c]} B
\schemestop

\end{document}

Beispiel eins

oder zur Bequemlichkeit einen Befehl definieren, der das für Dich macht:

Öffne in Overleaf
\documentclass{article}
\usepackage{chemfig}

\newcommand\stack[2][5cm]{\parbox{#1}{\centering#2}}

\begin{document}

\schemestart
 A \arrow{->[\stack{a\\b}][c]} B
\schemestop

\end{document}

Eine zweite Möglichkeit ohne Argument für die Breite wäre, eine {tabular} Umgebung zu verwenden (Dank an @saputello für den Hinweis):

Öffne in Overleaf
\documentclass{article}
\usepackage{chemfig}

\newcommand\stack[1]{\begin{tabular}{@{}c@{}}#1\end{tabular}}

\begin{document}

\schemestart
 A \arrow{->[\stack{a\\b}][c]} B
\schemestop

\end{document}

Die Label sind TikZ-Knoten. Wenn man es also schaffte, ihnen die Option align=center hinzuzufügen, dann bräuchte man die \parbox oder die {tabular}-Umgebung nicht. Leider stellt chemfig keine Schnittstelle bereit, um ihre Eigenschaften direkt zu ändern. Die Knoten werden durch den Befehl \CF@arrow@display@label@a gesetzt, den man umdefinieren könnte. Anstelle der manuellen Neu-Deufinition ist aber ein Patch mit der Hilfe von regexpatch Paket leichter:

Öffne in Overleaf
\documentclass{article}
\usepackage{chemfig}
\usepackage{regexpatch}
\makeatletter
% \xpatchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
% die Sternvariante ersetzt alle Vorkommnisse von <search>
\xpatchcmd*\CF@arrow@display@label@a{node[}{node[align=center,}{}{}
\makeatother

\begin{document}

\schemestart
 A \arrow{->[a\\b][c]} B
\schemestop

\end{document}
Permanenter link

beantwortet 24 Jul '13, 08:51

Clemens's gravatar image

Clemens
19.9k113360

bearbeitet 15 Apr, 05:09

Das ist die Übersetzung meiner Antwort auf TeX.sx zu einer ähnlichen Frage.

(24 Jul '13, 08:52) Clemens

Super, vielen Dank! Für mich funktioniert folgende Lösung super:

\makeatletter
\newcommand\stack[2][5cm]{\parbox{#1}{\centering#2}}
\makeatother
(24 Jul '13, 09:17) Bettina

@Bettina ich habe Deine Antwort in einen Kommentar zu Clemens Antwort umgewandelt. Zur Info, diese Seite funktioniert etwas spezieller als Foren, wo man hintereinander wegschreibt: oben steht eine Frage, unten stehen Antworten - auf diese Frage. Bemerkungen gehen noch als Kommentare zu schreiben. Das stellt Lösungen besser dar für spätere Leser.

(24 Jul '13, 09:31) stefan ♦♦

@Clemens: \makeatletter und \makeatother sind bei der Definition von \stack überflüssig. Das optionale Argument für die Breite kann man sich sparen, wenn man die \parbox durch eine tabular ersetzt:

\newcommand\stack[1]{\begin{tabular}{@{}c@{}}#1\end{tabular}}

alternativ kann man auch eine varwidth-Umgebung mit dem varwidth-Paket verwenden, braucht dann aber wieder ein Argument für die maximale Breite.

(24 Jul '13, 12:03) saputello

@saputello komisch, \makeatletter ist mir gar nicht aufgefallen... muss ein Überbleibsel eines anderen Versuchs sein... werde ich rauslöschen. tabular ist eine gute Idee!

(24 Jul '13, 12:05) Clemens
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×31
×28
×27
×18

Frage gestellt: 24 Jul '13, 08:38

Frage wurde angeschaut: 6,930 Mal

Zuletzt aktualisiert: 15 Apr, 05:09