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

Formelsatz für Mathematik, Naturwissenschaften und Technik


Schinze
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Fr 14. Mai 2021, 16:20

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

Beitrag 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?

Zuletzt geändert von Stefan Kottwitz am Di 31. Aug 2021, 09:57, insgesamt 1-mal geändert.
Grund: Code markiert


Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2485
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

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

Beitrag 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


Gute*r Gȧst*in

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

Beitrag 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.


Schinze
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Fr 14. Mai 2021, 16:20

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

Beitrag 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?


Grummelgast

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

Beitrag 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.


Antworten