PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : numerierte Formel in Tabelle?



Gulaschkanone
11-08-2011, 21:28
Hallo,
ich habe folgendes Problem: Ich möchte ein paar chemische Formeln so anordnen, wie es das folgende Minimalbeispiel zeigt.



\documentclass[11pt,a4paper]{scrreprt}
\usepackage{amsmath, amssymb, tabularx}
\begin{document}

\begin{tabular}{lrcl}
Anode: & $\frac{1}{2}O_{2}+2e^{-}$ & $\longrightarrow$ & $O^{2-}$ \\
Kathode: & $H_{2}+O^{2-}$ & $\longrightarrow$ & $H_{2}O+2e^{-}$ \\
Gesamtreaktion: & $H_{2}+\frac{1}{2}O_{2}$ & $\longrightarrow$ & $H_{2}O$ \\
\end{tabular}

\end{document}


Mein Problem ist nun noch die Nummerierung der Formeln. Dies gelingt mir einfach nicht, da man \begin{equation} nicht in der Tabelle einsetzen kann.

\begin{eqnarray} scheidet zur Verwendung leider aus, da es alles an der mittleren Spalte zentriert, wodurch es für meinen Zweck mehr als komisch aussieht.

Mit dem \quad-Befehl in der Equation-Umgebung geht leider auch nicht, da ich damit die einzelnen Zeilen nicht gerade untereinander bekomme.

Würde mich sehr über eine Idee zur Lösung dieses Problems freuen.

LuPi
12-08-2011, 05:58
Aus der Hüfte geschossen (ohne es getestet zu haben, trotz MB), könntest
Du es mit der alignat-Umgebung versuchen. Das sollte das Gewünschte liefern.


Ergänzung: Naja, so ganz passt es nicht (die linke Spalte müsste "nur" noch
linksbündig ausgerichtet werden):


\documentclass[fleqn,11pt,a4paper]{scrreprt}
\usepackage{amsmath, amssymb, tabularx}
\begin{document}

\begin{tabular}{lrcl}
Anode: & $\frac{1}{2}O_{2}+2e^{-}$ & $\longrightarrow$ & $O^{2-}$ \\
Kathode: & $H_{2}+O^{2-}$ & $\longrightarrow$ & $H_{2}O+2e^{-}$ \\
Gesamtreaktion: & $H_{2}+\frac{1}{2}O_{2}$ & $\longrightarrow$ & $H_{2}O$ \\
\end{tabular}

\begin{alignat}{3}
\text{Anode:} & \frac{1}{2}O_{2}+2e^{-} & \longrightarrow & O^{2-} \\
\text{Kathode:} & H_{2}+O^{2-} & \longrightarrow & H_{2}O+2e^{-} \\
\text{Gesamtreaktion:} & H_{2}+\frac{1}{2}O_{2} & \longrightarrow & H_{2}O
\end{alignat}

\end{document}


Und noch ein kleiner Literaturtip: mathmode.pdf von Herbert Voß (http://www.tex.ac.uk/tex-archive/info/math/voss/mathmode/Mathmode.pdf), vielleicht findest Du dort etwas Zielführendes.

Gulaschkanone
12-08-2011, 13:02
danke für deine Mühen, doch genau das mit dem linksbündig ist das Problem, denn sonst kann man mit eqnarray das gleiche wie mit alignat erzeugen.

Hat jemand eine idee wie man die linke Spalte am linken Rand ausgerichtet bekommt?

mechanicus
12-08-2011, 13:26
\documentclass[11pt,a4paper]{scrreprt}
\usepackage{amsmath, amssymb, tabularx}
\usepackage{showframe,lipsum}
\usepackage{hyperref}
\newcommand{\tagarray}{%
\refstepcounter{equation}%
(\theequation)%
}

\begin{document}
\begin{equation}
1+1=2\label{1}
\end{equation}

\noindent\begin{tabularx}{\linewidth}{@{}lrcl>{\raggedleft\arraybackslash}X@{}}
Anode: & $\frac{1}{2}O_{2}+2e^{-}$ & $\longrightarrow$ & $O^{2-}$ & \tagarray\label{2}\\
Kathode: & $H_{2}+O^{2-}$ & $\longrightarrow$ & $H_{2}O+2e^{-}$ &\tagarray\label{3}\\
Gesamtreaktion: & $H_{2}+\frac{1}{2}O_{2}$ & $\longrightarrow$ & $H_{2}O$ &\tagarray\label{4}
\end{tabularx}

\begin{equation}
1+1=2\label{5}
\end{equation}
\lipsum[1]
\ref{1}\qquad\ref{2}\qquad\ref{3}\qquad\ref{4}\qqu ad\ref{5}
\end{document}

Es sollte bald mit dem Paket breqn und der bereitgestellten Umgebung darray klappen.

Marco

Gulaschkanone
12-08-2011, 16:55
Vielen, vielen Dank an Mechanicus für den Code, er funktioniert super und sieht genau so aus wie ich es mir vorgestellt habe.

Nur etwas Kleines stört mich noch: Die Gleichungsnummern in der Tabelle sind leicht nach unten gerutscht, also nicht mehr auf einer Zeile mit der Gleichung. Kann man die irgendwie das Stück wieder hochrücken? Ich habe aber auch keine Idee warum die da überhaupt so leicht versetzt sind.

mechanicus
12-08-2011, 17:03
Hi,
Nutze den Code

\newcommand{\tagarray}{%
\mbox{}\refstepcounter{equation}%
$(\theequation)$%
}

Warum das aber abrutscht ist mir auch gerade unklar?

Marco

Gulaschkanone
12-08-2011, 17:13
super, es funktioniert 1A!
Danke für deine schnelle Hilfe

mechanicus
12-08-2011, 17:16
Hi,

falls dennoch jemand weiß, warum es im obigen Beispiel abrutscht, wäre ich dankbar für eine Erklärung.

Marco

rais
14-08-2011, 11:17
Moin Marco,
afaics liegt es daran, was hyperref aus \refstepcounter macht. Zum Vergleich:


\documentclass{minimal}
\usepackage{hyperref}
\newcommand{\tagarray}{%
\refstepcounter{equation}%
(\theequation)%
}
\begin{document}
\begin{tabular}{@{}rp{2cm}@{}}
a & \tagarray\\
b & \tagarray\\
\end{tabular}
\end{document}

(weitere) Mögliche Abhilfen bezogen auf Dein eigenes Beispiel mit tabularx:

hyperref weglassen,
die öffnende Klammer in der \tagarray-Definition vor \refstepcounter ziehen (spart die \mbox),
statt tabularx tabular* mit r- statt X-Spalte (und entsprechendem @{\extracolsep{\fill}} davor),
tabularx dazu überreden, statt p- eine m-Spalte zu nehmen


\renewcommand\tabularxcolumn[1]{m{#1}}


auch eine Nachfrage beim Paketautor dürfte nicht schaden.

@Gulaschkanone: Du solltest Dir vllt auch Pakete wie mhchem ansehen, afair werden chemische Symbole generell aufrecht gesetzt.

MfG

mechanicus
14-08-2011, 12:00
Moin Marco,
afaics liegt es daran, was hyperref aus \refstepcounter macht.
stimmt. Habe mal refstepcounter abegeändert:

\makeatletter
\def\refstepcounter#1{%
\ifvmode\else\leavevmode\fi%ergaenzt
\ifHy@pdfstring
\else
\H@refstepcounter{#1}%
\edef\This@name{#1}%
\ifx\This@name\name@of@slide
\else
\if@skiphyperref
\else
\if@hyper@item
\stepcounter{Item}%
\hyper@refstepcounter{Item}%
\@hyper@itemfalse
\else
\hyper@refstepcounter{#1}%
\fi
\fi
\fi
\fi
}
\makeatother
Dann funktioniert es ;)


Gruß
Marco

sommerfee
14-08-2011, 15:58
Dann funktioniert es ;)

Kommentar von Heiko (Maintainer von hyperref) dazu in dctt [1]:


Diese Zeile sollte auf *keinen* Fall in \refstepcounter stehen,
da dass einen Mode-Wechsel verursacht. Wenn ein Mode-Wechsel
nötig ist, sollte er außerhalb von \refstepcounter erfolgen.


[1] https://groups.google.com/group/de.comp.text.tex/browse_thread/thread/46ab122fd449bfd2

mechanicus
14-08-2011, 16:49
Das wollte ich gerade schreiben :p

Gruß
Marco

cgnieder
03-03-2012, 20:04
afair werden chemische Symbole generell aufrecht gesetzt.

Das ist richtig. IUPAC (Green Book 3. Auflage S. 49) empfielt:

The symbols for the chemical elements are (in most cases) derived from their Latin names and [...] should always be printed in Roman (upright) type.

Ich würde daher folgendes empfehlen:


\documentclass[11pt,a4paper]{scrreprt}
\usepackage{tabularx}
\usepackage{showframe}
\usepackage{chemmacros}
\usepackage{hyperref}
\newcommand{\tagarray}{%
\leavevmode\refstepcounter{equation}%
(\theequation)}

\begin{document}

\noindent\begingroup% damit die Änderungen an chemformula lokal bleiben
\chemsetup[chemformula]{compound-sep=0pt}
\begin{tabularx}{\linewidth}{@{}lrcl>{\raggedleft\arraybackslash}X@{}}
Anode: & \ch{1/2 O2 + 2 e- & -> & O^2-} & \tagarray\label{1}\\
Kathode: & \ch{H2 + O^2- & -> & H2O + 2 e-} & \tagarray\label{2}\\
Gesamtreaktion: & \ch{H2 + 1/2 O2 & -> & H2O} & \tagarray\label{3}
\end{tabularx}
\endgroup

\end{document}

Gruß