PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit \newenvironment



cgogolin
11-05-2007, 20:26
Hallo!

Ich wollte die 'align' Umgebung in einer neuen Umgebung verwenden, leider funktioniert das nicht so wie ich gedacht hatte.

Bei diesem Code


\documentclass{article}
\usepackage{amsmath}

\newenvironment{alignb}{\begin{align}}{\end{align} }

\begin{document}

\begin{alignb}
F &= d + 5\, \alpha\\
g &= f +3 \alpha
\end{alignb}

\end{document}

bekomme ich folgenden Fehler:


ERROR: LaTeX Error: \begin{align} on input line 9 ended by \end{alignb}.

--- TeX said ---

See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...

l.12 \end{alignb}

--- HELP ---
From the .log file...

Your command was ignored.
Type I <command> <return> to replace it with another command,
or <return> to continue without it.



Das selbe mit 'equation' funktioniert jedoch?!

Vielleicht kann mich ja einer von euch erleuchten was da schief geht...

Danke!


Noch ein Nachtrag:

Der Fehler tritt auch mit den anderen in amsmath deffinierten Umgebungen auf.

Stefan_K
11-05-2007, 21:27
Hi,

folgende Modifikation funktioniert:


\newenvironment{alignb}{\align}{\endalign}

Siehe amsmath-FAQ (http://www.ams.org/tex/amsmath-faq.html) bzw. technote (ftp://ftp.ams.org/pub/tex/amslatex/math/technote.pdf).

Grüße,

Stefan

cgogolin
11-05-2007, 23:18
Ah, sehr gut, das ist schon mal was!

Jetzt ist es nur so, dass ich eigentlich nicht 'align' sondern 'align*' verwenden wollte.
(Ich hatte das nur verschwiegen, um das Beispiel möglichst einfach zu halten.)

Leider funktioniert


\newenvironment{alignb}{\align*}{\endalign*}

natürlich nicht.

Gibt es auch eine Möglichkeit das zu bewerkstelligen?

Stefan_K
12-05-2007, 00:51
Eine Alternative zur Umgebungsdefinition wäre ein Makro dafür, also in der Art:


\newcommand{\alignb}[1]{\begin{align*}#1\end{align*}}
...
\alignb{
F &= d + 5\, \alpha\\
g &= f +3 \alpha
}



Das Codestück ist dann natürlich nicht mehr als Umgebung wahrnehmbar! Die de-tex-faq rät daher von solcherlei workarounds ab (8.2.6).

Stefan

sommerfee
12-05-2007, 08:39
Leider funktioniert


\newenvironment{alignb}{\align*}{\endalign*}

natürlich nicht.

Nimm


\newenvironment{alignb}{\csname align*\endcsname}{\csname endalign*\endcsname}

stattdessen.

Liebe Grüße,
Axel

cgogolin
14-05-2007, 23:01
So mach ichs!

Danke! und wieder was dazu gelernt...