
Verwenden von MiKTeX mit PDFLaTeX unter Windows
Ich möchte eine Umgebung erstellen, die zwei Miniseiten enthält; die erste hat ein Beschreibungselement und die zweite einen kleinen Text (oder ein Bild). Dieser Codeabschnitt funktioniert wie gewünscht:
{
\noindent
\begin{minipage}{0.5\textwidth}
\begin{description}
\item[Label] Description
\end{description}
\end{minipage}\hfill
\begin{minipage}{0.3\textwidth}
Second minipage
\end{minipage}
}
Ich wollte ein Makro oder eine Umgebung erstellen, die es mir leicht macht, diese Art von Inhalten einzuführen. Also erstelle ich die folgende Umgebung mit zwei Argumenten:
\newenvironment{myenvironment}[2]% 1:label, 2:second minipage text
{%
\noindent
\begin{minipage}{0.5\textwidth}
\begin{description}
\item[#1] % Description
}%
{%
\end{description}
\end{minipage}\hfill
\begin{minipage}{0.3\textwidth}
#2
\end{minipage}
}
Aber wenn ich versuche, es mit
\begin{myenvironment}{Label}{Second minipage text}
Description text
\end{myenvironment}
Ich bekomme Illegal parameter number in definition of \endmyenvironment.
einen Verweis auf die Zeile, die die newenvironment
Deklaration beendet. Nachdem ich einige Stunden damit gekämpft hatte, versuchte ich, doppelte Hashes ( ##
) zu verwenden und bekam zwei neue, unterschiedliche Fehler: You can't use `macro parameter character #' in restricted horizontal mode
und You can't use `macro parameter character #' in internal vertical mode
. Dieses Mal zeigten die Fehler auf die Zeilen, als ich die Umgebung verwenden wollte, aber keine Beanstandungen bezüglich der Definition hatte.
Was mache ich falsch?
Antwort1
Das ##
hatte nichts mit meinem Problem zu tun. Es scheint, dassSie können keine Argumente innerhalb des schließenden oder beendenden Codes einer benutzerdefinierten Umgebung verwenden. Es gibt Workarounds dafür, aber meiner Meinung nach sollte dies einhaben müssenFunktion. Mithilfe einer möglichen Problemumgehung – einer Hilfsvariable – gelangte ich zu dieser Arbeitsumgebung:
\newenvironment{myenvironment}[2]%
{%
\def\myenvargumentII{#2}
\noindent
\begin{minipage}{0.5\textwidth}
\begin{description}
\item[#1] % Description
}%
{%
\end{description}
\end{minipage}\hfill
\begin{minipage}{0.3\textwidth}
\myenvargumentII
\end{minipage}
}
Diese Lösung kam spät. In der Zwischenzeit hatte ich es geschafft, mein Problem mit einem \newcommand
a mit 3 Argumenten zu lösen:
\newcommand{\myminipages}[3]% 1:label, 2:secondminipage, 3:Description
{%
\noindent
\begin{minipage}{0.5\textwidth}
\begin{description}
\item[#1] #3
\end{description}
\end{minipage}\hfill
\begin{minipage}{0.3\textwidth}
#2
\end{minipage}
\medskip % vertical space
}
Kann verwendet werden mit:
\myminipages{Label}{Second minipage text}{Description text}
Ich hoffe es hilft.
[a] Es scheint, dass der newcommand
Ansatz gegenüber dem newenvironment
Ansatz keinen besonderen Vorteil bietet, zumindest für diese Anwendung. MehrHierUndHier.