Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 3

15 Apr '17, 11:09

cgnieder's gravatar image

cgnieder
22.1k253463

Du könntest den Inhalt des Labels in eine `\parbox` setzen: \documentclass{article} \usepackage{chemfig} \begin{document} \schemestart A \arrow{->[\parbox{5cm}{\centering a\\b}][c]} B \schemestop \end{document} ![Beispiel eins][1] oder zur Bequemlichkeit einen Befehl definieren, der das für Dich macht: \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][2] für den Hinweis): \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@i` `\CF@arrow@display@label@a` gesetzt, den man umdefinieren könnte: \documentclass{article} \usepackage{chemfig} \makeatletter \def\CF@arrow@display@label@i#1#2#3{% \ifx\@empty#1\@empty\else \if*\expandafter\@car\detokenize{#1}\@nil \ifCF@reac@debug node[pos=#2,sloped,yshift=#3\CF@arrow@labelsep,draw,fill,cyan](shifted@node){}% node[ draw,rotate=\CF@rotate@node#1\@nil,anchor=\CF@anchor@node#1\@nil#3,at=(shifted@node), align=center% <= das ist neu ]{\expandafter\@gobble\@gobble#1}% \else node[pos=#2,sloped,yshift=#3\CF@arrow@labelsep](shifted@node){}% node[ rotate=\CF@rotate@node#1\@nil,anchor=\CF@anchor@node#1\@nil#3,at=(shifted@node), align=center% <= this is new ]{\expandafter\@gobble\@gobble#1}% \fi \else \ifCF@reac@debug node[pos=#2,sloped,yshift=#3\CF@arrow@labelsep,draw,fill,cyan](shifted@node){}% node[ draw,pos=#2,anchor=-#390,sloped,yshift=#3\CF@arrow@labelsep, align=center% <= das ist neu ]{#1}% \else node[ pos=#2,anchor=-#390,sloped,yshift=#3\CF@arrow@labelsep, align=center% <= das ist neu ]{#1}% \fi \fi \fi } \makeatother \begin{document} \schemestart A \arrow{->[a\\b][c]} B \schemestop \end{document} könnte. Anstelle der manuellen Neu-Deufinition wäre ist aber ein Patch mit der Hilfe von [Enrico Gregorios][3]'s [`regexpatch`][4] `regexpatch` Paket leichter: \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@i{node[}{node[align=center,}{}{} \xpatchcmd*\CF@arrow@display@label@a{node[}{node[align=center,}{}{} \makeatother \begin{document} \schemestart A \arrow{->[a\\b][c]} B \schemestop \end{document} [1]: http://i.stack.imgur.com/NIiSc.png [2]: http://texwelt.de/wissen/benutzer/16 [3]: http://tex.stackexchange.com/users/4427/egreg [4]: http://www.ctan.org/pkg/regexpatch
Klicke auf Einblenden/Ausblenden von Überarbeitungen 2
weitere Möglichkeit hinzugefügt

24 Jul '13, 18:09

cgnieder's gravatar image

cgnieder
22.1k253463

Du könntest den Inhalt des Labels in eine `\parbox` setzen: \documentclass{article} \usepackage{chemfig} \begin{document} \schemestart A \arrow{->[\parbox{5cm}{\centering a\\b}][c]} B \schemestop \end{document} ![Beispiel eins][1] oder zur Bequemlichkeit einen Befehl definieren, der das für Dich macht: \documentclass{article} \usepackage{chemfig} \makeatletter \newcommand\stack[2][5cm]{\parbox{#1}{\centering#2}} \makeatother \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][2] für den Hinweis): \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@i` gesetzt, den man umdefinieren könnte: \documentclass{article} \usepackage{chemfig} \makeatletter \def\CF@arrow@display@label@i#1#2#3{% \ifx\@empty#1\@empty\else \if*\expandafter\@car\detokenize{#1}\@nil \ifCF@reac@debug node[pos=#2,sloped,yshift=#3\CF@arrow@labelsep,draw,fill,cyan](shifted@node){}% node[ draw,rotate=\CF@rotate@node#1\@nil,anchor=\CF@anchor@node#1\@nil#3,at=(shifted@node), align=center% <= das ist neu ]{\expandafter\@gobble\@gobble#1}% \else node[pos=#2,sloped,yshift=#3\CF@arrow@labelsep](shifted@node){}% node[ rotate=\CF@rotate@node#1\@nil,anchor=\CF@anchor@node#1\@nil#3,at=(shifted@node), align=center% <= this is new ]{\expandafter\@gobble\@gobble#1}% \fi \else \ifCF@reac@debug node[pos=#2,sloped,yshift=#3\CF@arrow@labelsep,draw,fill,cyan](shifted@node){}% node[ draw,pos=#2,anchor=-#390,sloped,yshift=#3\CF@arrow@labelsep, align=center% <= das ist neu ]{#1}% \else node[ pos=#2,anchor=-#390,sloped,yshift=#3\CF@arrow@labelsep, align=center% <= das ist neu ]{#1}% \fi \fi \fi } \makeatother \begin{document} \schemestart A \arrow{->[a\\b][c]} B \schemestop \end{document} Anstelle der manuellen Neu-Deufinition wäre ein Patch mit der Hilfe von [Enrico Gregorios][2]'s [`regexpatch`][3] Gregorios][3]'s [`regexpatch`][4] Paket leichter: \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@i{node[}{node[align=center,}{}{} \makeatother \begin{document} \schemestart A \arrow{->[a\\b][c]} B \schemestop \end{document} [1]: http://i.stack.imgur.com/NIiSc.png [2]: http://texwelt.de/wissen/benutzer/16 [3]: http://tex.stackexchange.com/users/4427/egreg [3]: [4]: http://www.ctan.org/pkg/regexpatch
Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

24 Jul '13, 14:51

cgnieder's gravatar image

cgnieder
22.1k253463