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, 08:50

Delorian's gravatar image

Delorian
254111
Akzeptiert: 44%

bearbeitet 05 Dez, 11:42

Ijon%20Tichy's gravatar image

Ijon Tichy
7.8k11019

2

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

(05 Dez, 11: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, 11:31

Ijon%20Tichy's gravatar image

Ijon Tichy
7.8k11019

bearbeitet 05 Dez, 11:47

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:

×28
×5
×1

Frage gestellt: 05 Dez, 08:50

Frage wurde angeschaut: 429 Mal

Zuletzt aktualisiert: 05 Dez, 11:47