TeXwelt wurde neu installiert. Es funktionieren noch nicht alle Features und auch an den deutschsprachigen Formulierungen wird verbessert. Danke für eure Geduld.

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

gefragt 24 Jul '13, 14:38

Bettina's gravatar image

Bettina
66571923
Akzeptiert-Rate: 25%

bearbeitet 25 Sep '13, 18:52

saputello's gravatar image

saputello
10.4k93760


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, 14:51

Clemens's gravatar image

Clemens
20.7k163463
Akzeptiert-Rate: 61%

bearbeitet 15 Apr '17, 11:09

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

(24 Jul '13, 14: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, 15: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, 15: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, 18: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, 18:05) Clemens
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:

×38
×36
×30
×18

gestellte Frage: 24 Jul '13, 14:38

Frage wurde gesehen: 10,056 Mal

zuletzt geändert: 15 Apr '17, 11:09