Der Befehl \verb dient dazu Quellcode von LaTeX darstellen zu können. Anscheinend macht der Befehl das aber nicht immer korrekt. In einem Fließtext und innerhalb einer tabular-Umgebung wird der Quellcode korrekt dargestellt. In einer tabularx-Umgebung jedoch nicht (siehe eingefügtes Leerzeichen: \ce {A <<-> B}).

alt text

Öffne in Overleaf
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[version=4]{mhchem}

\usepackage{booktabs}
\usepackage{tabularx}

\newcommand*{\texttablehead}[1]{\textbf{#1}}
\newcommand*{\tablehead}[1]{\texttablehead{#1}}
\renewcommand{\arraystretch}{1.2}

\begin{document}
\section*{Reaktionspfeile mit dem Paket \texttt{mhchem}}
Ein nach rechts verschobenes chemisches Gleichgewicht einer chemischen Reaktion (\ce{A <=>> B})
wird mit dem Befehl \verb+\ce{A <=>> B}+ dargestellt.
\begin{table}[ht]
\sffamily
\caption{Befehl innerhalb \texttt{tabular}-Umgebung.}
\label{tab:tab_ReaktionsPfeil}
\begin{tabular}[\textwidth]{p{55mm}p{32mm}p{25mm}@{}}
\toprule
\tablehead{Reaktionsrichtung} & \tablehead{Ausgabe} & \tablehead{Befehl}  \\
\toprule
    Gleichgewicht & \ce{A <=> B} &  \verb+\ce{A <=> B}+ \\      
    Gleichgewicht nach rechts & \ce{A <=>> B} & \verb+\ce{A <=>> B}+ \\
    Gleichgewicht nach links  & \ce{A <<=> B} & \verb+\ce{A <<=> B}+ \\
\bottomrule
\end{tabular}
\end{table}

\begin{table}[h]
\sffamily
\caption{Befehl innerhalb \texttt{tabularx}-Umgebung.}
\label{tab:tab_Reaktionspfeil}
\begin{tabularx}{\textwidth}{@{}p{55mm}p{32mm}p{25mm}@{}}
\toprule
\textbf{Reaktionsrichtung}  & \textbf{Ausgabe} & \textbf{Befehl} \\
\toprule
    Gleichgewicht & \ce{A <=> B} &  \verb+\ce{A <=> B}+ \\      
    Gleichgewicht nach rechts & \ce{A <=>> B} & \verb+\ce{A <=>> B}+ \\
    Gleichgewicht nach links  & \ce{A <<=> B} & \verb+\ce{A <<=> B}+ \\
\bottomrule
\end{tabularx}
\end{table}

\end{document}

gefragt 05 Dez '18, 14:50

Delorian's gravatar image

Delorian
66912333
Akzeptiert-Rate: 17%

bearbeitet 05 Dez '18, 17:42

gast3's gravatar image

gast3
(ausgesetzt)

2

Siehe Abschnitt 3 "Differences between tabularx and tabular*" in der tabularx Dokumentation.

(05 Dez '18, 17:16) Ulrike Fischer

Dieses Verhalten ist in der Anleitung zu tabularx dokumentiert:

• The body of the tabularx environment is in fact the argument to a command, and so certain constructions which are not allowed in command arguments (like \verb) may not be used.

Frei übersetzt: Der Inhalt einer tabularx-Umgebung ist ein Argument einer Anweisung und daher können Konstrukte, die in einem Argument nicht erlaubt sind (beispielsweise \verb), darin nicht verwendet werden.

Zwar versucht tabularx da noch zu retten, was zu retten ist, aber zaubern kann es eben nicht. Immerhin erkennt es die \verb-Anweisung und gibt auch eine Warnung aus: »\verb may be unreliable inside tabularx«.

Dass \verb im Argument einer Anweisung nicht funktioniert, ist altbekannt. Das liegt daran, dass es mit \catcode-Änderungen arbeitet. Diese kommen allerdings innerhalb des Arguments einer Anweisung zu spät, weil zu dem Zeitpunkt das Argument bereits gelesen und die Token daher mit den \catode-Werten gebildet sind, die zum Zeitpunkt des Lesens des Arguments galten.

Als Notlösung kannst du mit \texttt und \detokenize oder \string arbeiten:

Öffne in Overleaf
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[version=4]{mhchem}

\usepackage{booktabs}
\usepackage{tabularx}

\newcommand*{\texttablehead}[1]{\textbf{#1}}
\newcommand*{\tablehead}[1]{\texttablehead{#1}}
\renewcommand{\arraystretch}{1.2}

\begin{document}
\section*{Reaktionspfeile mit dem Paket \texttt{mhchem}}
Ein nach rechts verschobenes chemisches Gleichgewicht einer chemischen Reaktion (\ce{A <=>> B})
wird mit dem Befehl \verb+\ce{A <=>> B}+ dargestellt.
\begin{table}[ht]
\sffamily
\caption{Befehl innerhalb \texttt{tabular}-Umgebung.}
\label{tab:tab_ReaktionsPfeil}
\begin{tabular}[\textwidth]{p{55mm}p{32mm}p{25mm}@{}}
\toprule
\tablehead{Reaktionsrichtung} & \tablehead{Ausgabe} & \tablehead{Befehl}  \\
\toprule
    Gleichgewicht & \ce{A <=> B} &  \verb+\ce{A <=> B}+ \\      
    Gleichgewicht nach rechts & \ce{A <=>> B} & \verb+\ce{A <=>> B}+ \\
    Gleichgewicht nach links  & \ce{A <<=> B} & \verb+\ce{A <<=> B}+ \\
\bottomrule
\end{tabular}
\end{table}

\begin{table}[h]
\sffamily
\caption{Befehl innerhalb \texttt{tabularx}-Umgebung.}
\label{tab:tab_Reaktionspfeil}
\begin{tabularx}{\textwidth}{@{}p{55mm}p{32mm}p{25mm}@{}}
\toprule
\textbf{Reaktionsrichtung}  & \textbf{Ausgabe} & \textbf{Befehl} \\
\toprule
    Gleichgewicht & \ce{A <=> B} &  \texttt{\detokenize{\ce{A <=> B}}} \\      
    Gleichgewicht nach rechts & \ce{A <=>> B} & \texttt{\string\ce\{A <=>> B\}} \\
    Gleichgewicht nach links  & \ce{A <<=> B} & \texttt{\string\ce\detokenize{{A <<=> B}}} \\
\bottomrule
\end{tabularx}
\end{table}

\end{document}

Tabellen

Man beachte die unterschiedliche Ausgabe bezüglich Leerzeichen bzw. die Unterschiedliche Behandlung von geschweiften Klammern.

Permanenter link

beantwortet 05 Dez '18, 17:31

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 05 Dez '18, 17:47

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:

×32
×5
×2

gestellte Frage: 05 Dez '18, 14:50

Frage wurde gesehen: 4,866 Mal

zuletzt geändert: 05 Dez '18, 17:47