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

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Kein Notfall; aber warum geht folgendes (2.Variante) nicht

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

von Grummelgast » Di 31. Aug 2021, 13:26

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.

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

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

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

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

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

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

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

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

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

von Schinze » Mo 30. Aug 2021, 17:53

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


Nach oben