Seite 1 von 1

Kein Notfall; aber warum geht folgendes (2.Variante) nicht

Verfasst: Mo 30. Aug 2021, 17:53
von Schinze
\documentclass[a4paper]{amsbook} 
\usepackage{xcolor}
\usepackage{empheq,framed}
\begin{document}
    \def \GELB {box=\fcolorbox{black}{yellow!20}}
    \begin{empheq}[box=\fcolorbox{black}{yellow!20}]{equation}
A=B
    \end{empheq}
 \begin{empheq}[\GELB]{equation}
    A=C
\end{empheq}
    \end{document}

%in der 2. Variante kommt der Fehler "missing \endcsname inserted... warum?


Re: Kein Notfall; aber warum geht folgendes (2.Variante) nicht

Verfasst: Mo 30. Aug 2021, 18:50
von Wegweiser

Re: Kein Notfall; aber warum geht folgendes (2.Variante) nicht

Verfasst: Di 31. Aug 2021, 09:59
von Stefan Kottwitz

Hallo Schinze,

willkommen im Forum!

Ich habe oben mal editiert, um den Code zu markieren. Damit kann er direkt hier ausgeführt werden. Es gibt einen Schalter dafür, beim Editieren. Nächstes Mal. ;-)

Hier ist das Problem anscheinend, dass \GELB expandiert wird. Man kann es geschützt definieren, oder schützen, wie z.B.:

\documentclass[a4paper]{amsbook} 
\usepackage{xcolor}
\usepackage{empheq,framed}
\begin{document}
    \def \GELB {box=\fcolorbox{black}{yellow!20}}
    \begin{empheq}[box=\fcolorbox{black}{yellow!20}]{equation}
A=B
    \end{empheq}
 \begin{empheq}[\protect\GELB]{equation}
    A=C
\end{empheq}
    \end{document}

Dann verschwindet der Fehler. Die Ausgabe ist aber noch nicht korrekt, also Thema weiter offen. :-)

Stefan


Re: Kein Notfall; aber warum geht folgendes (2.Variante) nicht

Verfasst: Di 31. Aug 2021, 10:31
von Gute*r Gȧst*in

Das Problem ist eher, dass das Argument von empheq vor der Auswertung der Optionen überhaupt nicht expandiert wird. Dadurch bekommt er Optionen-Parser eben nur ein nicht expandiertes \GELB zu sehen. Beim Versuch, das in key und value zu zerlegen, gibt es dann den Fehler. Es wird also eine Variante von empheq benötigt, die das Argument einmal expandiert, damit es für empheq dann wieder ein key-value-Paar (bzw. eine Liste solcher Paare) ergibt:

\documentclass[a4paper]{amsbook} 
\usepackage{xcolor}
\usepackage{empheq,framed}
\newcommand* \GELB{box=\fcolorbox{black}{yellow!20}}
\newenvironment{oempheq}[1][]{%
  \expandafter\empheq\expandafter[#1]
}{%
 \endempheq
}
\begin{document}
    \begin{empheq}[box=\fcolorbox{black}{yellow!20}]{equation}
A=B
    \end{empheq}
 \begin{oempheq}[\GELB]{equation}
    A=C
\end{oempheq}
    \end{document}

Aber natürlich funktioniert das nur, solange \GELB in einem Schritt zu einer gültigen key-value-Optionenliste wird. Sobald beispielsweise etwas wie:

\newcommand*\gelb{box=\fcolorbox{black}{yellow!20}}
\newcommand*{\GELB}{\gelb}

gemacht wird, funktioniert das wieder nicht mehr.

Das ist ein mehr oder weniger grundsätzliches Problem mit key-value-Optionen. Das Argument muss in der Regel bereits die Optionen-Liste sein und nicht erst durch Expansion zu einer Optionenliste werden. Das Problem hatte kürzlich sogar der LaTeX-Kern an einer Stelle. Es gab da im Bug-Tracker eine Meldung (AFAIR von KOMA).

Danke @Stefan Kottwitz für die Codemarkierung. Ohne hätte ich gerade kein Werkzeug zur Hand gehabt, um meine Erklärung auch mit einem getesteten Code zu versehen.


Re: Kein Notfall; aber warum geht folgendes (2.Variante) nicht

Verfasst: Di 31. Aug 2021, 11:06
von Schinze

Habe die Frage aus Versehen doppelt gestellt. Bitte ignorieren. Das mit dem Schalter habe ich noch nicht begriffen. Gibt es eine Erklärung für dummies?


Re: Kein Notfall; aber warum geht folgendes (2.Variante) nicht

Verfasst: Di 31. Aug 2021, 13:26
von Grummelgast
Schinze hat geschrieben:
Di 31. Aug 2021, 11:06

Gibt es eine Erklärung für dummies?

Erklärungen zur Forenbedienung für Dummies gibt es im passenden Forum. U. a. findet man dort ziemlich weit oben einen Beitrag zum Hervorheben von Code in Beiträgen aber auch weitere nützliche Informationen. Es lohnt sich also, sich min. jenes Forum aber auch diverse andere auf goLaTeX angebotene Foren einmal etwas näher anzuschauen – egal, ob man ein Problem mit dem Forum, mit den Leuten oder mit LaTeX hat.