alt text

Ich möchte eine Liste erstellen, mit der Ausgabe

\ifnum\y=0 {null} \else $\underbrace{\pgfmathresult}_{a}$ % Tut nicht ! ! !

dafür bekomme ich aber Illegal parameter number in definition of \ylist. <to be read again> \crcr

Das Problem scheint explizit das underbrace zu sein (andere Mathenotationen scheinen zu gehen, z.B. \frac usw.)

Ohne underbrace geht z.B.

\ifnum\y=0 {null} \else $\pgfmathresult$ % Tut

Was läuft hier schief?

Öffne in Overleaf
\documentclass[border=5mm, varwidth]{standalone}
\usepackage{tikz, amsmath}

\begin{document}
Tut: $\underbrace{1}_{a}$

Tut nicht mit underbrace: 
\newcommand{\ylist}{}% Name reservieren
\newcommand\ausgabe{%
   \ifnum\y=0 {null}
   \else $\pgfmathresult$ % Tut
   %\else $\underbrace{\pgfmathresult}_{a}$ % Tut nicht ! ! ! 
   \fi
}
\let\ylist=\empty% Liste erstellen
\foreach \y in {0,1,2,3}
{
  \pgfmathparse{\y+0.5}%
  \ifx\empty\ylist{} \xdef\ylist{\ausgabe}%
  \else \xdef\ylist{\ylist,\ausgabe}%
  \fi
}

Anzeigen: \ylist
\end{document}

PS: Ich habe auch hier gefragt, da ich erst dachte, es handeltz sich um ein Mathenotationsproblem. Es scheint aber eher ein LaTeX-Problem zu sein.

gefragt 13 Feb '18, 18:29

cis's gravatar image

cis
9.5k75452491
Akzeptiert-Rate: 29%

bearbeitet 13 Feb '18, 19:01

gast3's gravatar image

gast3
(ausgesetzt)


\underbrace ist nicht voll expandierbar, es zerbricht also bei \xdef. Davor muss man es schützen. Überhaupt ist \xdef bei LaTeX meist durch \protected@xdef zu ersetzen, damit man nicht voll expandierbare Befehle mit \protect schützen kann:

Öffne in Overleaf
\documentclass[border=5mm, varwidth]{standalone}
\usepackage{tikz, amsmath}

\begin{document}
Tut: $\underbrace{1}_{a}$

Tut nicht mit underbrace: 
\newcommand{\ylist}{}% Name reservieren
\newcommand\ausgabe{%
   \ifnum\y=0 {null}
   %\else $\pgfmathresult$ % Tut
   \else $\protect\underbrace{\pgfmathresult}_{a}$ % Tut nicht ! ! ! 
   \fi
}
\let\ylist=\empty% Liste erstellen
\makeatletter
\foreach \y in {0,1,2,3}
{
  \pgfmathparse{\y+0.5}%
  \ifx\empty\ylist{} \protected@xdef\ylist{\ausgabe}%
  \else \protected@xdef\ylist{\ylist,\ausgabe}%
  \fi
}
\makeatother

Anzeigen: \ylist
\end{document}

so funktioniert es

Permanenter link

beantwortet 13 Feb '18, 18:55

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 13 Feb '18, 18:58

Klasse! Damit komme ich weiter...

(13 Feb '18, 19:00) cis
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×21
×7
×6

gestellte Frage: 13 Feb '18, 18:29

Frage wurde gesehen: 5,083 Mal

zuletzt geändert: 13 Feb '18, 19:00