Rolf Krahl
2004-01-14 16:30:46 UTC
Folgendes Problem:
Ich habe ein System von Gleichungen, das eine inhaltliche Einheit
bildet und das ich deshalb aligned setzen will und mit einer einzigen
Gleichungsnummer versehen will.
Im Moment mache ich folgendes (vereinfachtes Beispiel, natürlich):
---------- *snip* ----------
\documentclass{scrartcl}
\usepackage{amsmath}
\begin{document}
Consider the following problem:
\begin{equation}
\label{eqn:model:waermeleit}
\begin{aligned}
\rho c_p \partial_t \vartheta - \lambda \Delta \vartheta &= 0
&\quad& \text{in \(\Omega\),} \\
\vartheta &= \vartheta_{D}
&\quad& \text{on \(\Gamma_D\),} \\
\partial_{\mathbf{n}} \vartheta &= 0
&\quad& \text{on \(\Gamma_N\).}
\end{aligned}
\end{equation}
\end{document}
---------- *snap* ----------
Im wesentlichen tut das auch das was es soll. Es hat nur einen
Nachteil, es ist hoffnungslos zu breit. (Zweispaltiger Satz, die
Gleichungen sind natürlich etwas komplizierter und die Gebiete in der
rechten Spalte ebenfalls.)
Um Platz zu sparen, will ich nun die Gebiete, in denen die Gleichungen
jeweils gelten als Textzeilen zwischen die Gleichungen schreiben,
anstatt rechts davon. Also so etwa
In \Omega we have:
\rho c_p \partial_t ...
On \Gamma_D:
\vartheta &= \vartheta_{D}
On \Gamma_N:
\partial_{\mathbf{n}} \vartheta &= 0
Die Gleichungen sollen aber immer noch ein gemeinsames Alignment um
das Gleichheitszeichen haben und es auch nur eine Gleichungsnummer für
das Gesammtsystem vergeben werden. Da kommt einem natürlich
\intertext{} in den Sinn. D.h., ich würde gerne folgendes schreiben:
---------- *snip* ----------
\documentclass{scrartcl}
\usepackage{amsmath}
\begin{document}
Consider the following problem:
\begin{equation}
\label{eqn:model:waermeleit}
\begin{aligned}
\intertext{In \(\Omega\) we have:}
\rho c_p \partial_t \vartheta - \lambda \Delta \vartheta &= 0 \\
\intertext{On \(\Gamma_D\) we have:}
\vartheta &= \vartheta_{D} \\
\intertext{On \(\Gamma_N\) we have:}
\partial_{\mathbf{n}} \vartheta &= 0.
\end{aligned}
\end{equation}
\end{document}
---------- *snap* ----------
Allein, das geht nicht:
"ERROR: Package amsmath Error: Invalid use of \intertext."
\intertext ist nicht erlaubt in aligned. Es geht in nur in align.
D.h. folgendes kommt meinen Vorstellungen schon halbwegs nahe:
---------- *snip* ----------
\documentclass{scrartcl}
\usepackage{amsmath}
\begin{document}
Consider the following problem:
\begin{subequations}
\begin{align}
\label{eqn:model:waermeleit}
\intertext{In \(\Omega\) we have:}
\rho c_p \partial_t \vartheta - \lambda \Delta \vartheta &= 0. \\
\intertext{On \(\Gamma_D\) we have:}
\vartheta &= \vartheta_{D}. \\
\intertext{On \(\Gamma_N\) we have:}
\partial_{\mathbf{n}} \vartheta &= 0.
\end{align}
\end{subequations}
\end{document}
---------- *snap* ----------
Probleme jetzt:
* Die einzelnen Gleichungen werden als Untergleichungen
durchnummeriert (1a, 1b, 1c, ...), statt einer einzigen Nummer
(1). Ok, damit könnte ich leben, weil ich das Gesammtsystem
immernoch als Gleichung (1) ansprechen kann und jeder weiß was
gemeint ist. Aber schön ist das nicht.
* \intertext mag offensichtlich garnicht vor der ersten Gleichung
stehen. Es wird vor dem ersten \intertext eine leere Gleichung
gesetzt. Ok, dem könnte man mit einem Evil-Hack abhelfen, indem
man die Gleichungsnummer der leeren Gleichung mit \notag
unterdrückt (geht, habe ich ausprobiert) und dann die leere Zeile
durch ein passendes negatives \vspace vor dem ganzen System
kompensiert. Aber das ist erstens Fummelei und erscheint mir
zweitens als *evil*.
Hat jemand bessere Ideen?
Ich habe ein System von Gleichungen, das eine inhaltliche Einheit
bildet und das ich deshalb aligned setzen will und mit einer einzigen
Gleichungsnummer versehen will.
Im Moment mache ich folgendes (vereinfachtes Beispiel, natürlich):
---------- *snip* ----------
\documentclass{scrartcl}
\usepackage{amsmath}
\begin{document}
Consider the following problem:
\begin{equation}
\label{eqn:model:waermeleit}
\begin{aligned}
\rho c_p \partial_t \vartheta - \lambda \Delta \vartheta &= 0
&\quad& \text{in \(\Omega\),} \\
\vartheta &= \vartheta_{D}
&\quad& \text{on \(\Gamma_D\),} \\
\partial_{\mathbf{n}} \vartheta &= 0
&\quad& \text{on \(\Gamma_N\).}
\end{aligned}
\end{equation}
\end{document}
---------- *snap* ----------
Im wesentlichen tut das auch das was es soll. Es hat nur einen
Nachteil, es ist hoffnungslos zu breit. (Zweispaltiger Satz, die
Gleichungen sind natürlich etwas komplizierter und die Gebiete in der
rechten Spalte ebenfalls.)
Um Platz zu sparen, will ich nun die Gebiete, in denen die Gleichungen
jeweils gelten als Textzeilen zwischen die Gleichungen schreiben,
anstatt rechts davon. Also so etwa
In \Omega we have:
\rho c_p \partial_t ...
On \Gamma_D:
\vartheta &= \vartheta_{D}
On \Gamma_N:
\partial_{\mathbf{n}} \vartheta &= 0
Die Gleichungen sollen aber immer noch ein gemeinsames Alignment um
das Gleichheitszeichen haben und es auch nur eine Gleichungsnummer für
das Gesammtsystem vergeben werden. Da kommt einem natürlich
\intertext{} in den Sinn. D.h., ich würde gerne folgendes schreiben:
---------- *snip* ----------
\documentclass{scrartcl}
\usepackage{amsmath}
\begin{document}
Consider the following problem:
\begin{equation}
\label{eqn:model:waermeleit}
\begin{aligned}
\intertext{In \(\Omega\) we have:}
\rho c_p \partial_t \vartheta - \lambda \Delta \vartheta &= 0 \\
\intertext{On \(\Gamma_D\) we have:}
\vartheta &= \vartheta_{D} \\
\intertext{On \(\Gamma_N\) we have:}
\partial_{\mathbf{n}} \vartheta &= 0.
\end{aligned}
\end{equation}
\end{document}
---------- *snap* ----------
Allein, das geht nicht:
"ERROR: Package amsmath Error: Invalid use of \intertext."
\intertext ist nicht erlaubt in aligned. Es geht in nur in align.
D.h. folgendes kommt meinen Vorstellungen schon halbwegs nahe:
---------- *snip* ----------
\documentclass{scrartcl}
\usepackage{amsmath}
\begin{document}
Consider the following problem:
\begin{subequations}
\begin{align}
\label{eqn:model:waermeleit}
\intertext{In \(\Omega\) we have:}
\rho c_p \partial_t \vartheta - \lambda \Delta \vartheta &= 0. \\
\intertext{On \(\Gamma_D\) we have:}
\vartheta &= \vartheta_{D}. \\
\intertext{On \(\Gamma_N\) we have:}
\partial_{\mathbf{n}} \vartheta &= 0.
\end{align}
\end{subequations}
\end{document}
---------- *snap* ----------
Probleme jetzt:
* Die einzelnen Gleichungen werden als Untergleichungen
durchnummeriert (1a, 1b, 1c, ...), statt einer einzigen Nummer
(1). Ok, damit könnte ich leben, weil ich das Gesammtsystem
immernoch als Gleichung (1) ansprechen kann und jeder weiß was
gemeint ist. Aber schön ist das nicht.
* \intertext mag offensichtlich garnicht vor der ersten Gleichung
stehen. Es wird vor dem ersten \intertext eine leere Gleichung
gesetzt. Ok, dem könnte man mit einem Evil-Hack abhelfen, indem
man die Gleichungsnummer der leeren Gleichung mit \notag
unterdrückt (geht, habe ich ausprobiert) und dann die leere Zeile
durch ein passendes negatives \vspace vor dem ganzen System
kompensiert. Aber das ist erstens Fummelei und erscheint mir
zweitens als *evil*.
Hat jemand bessere Ideen?
--
Rolf Krahl <***@gmx.net>
Rolf Krahl <***@gmx.net>