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, 12:29

cis's gravatar image

cis
8.2k15166262
Akzeptiert: 71%

bearbeitet 13 Feb, 13:01

Ijon%20Tichy's gravatar image

Ijon Tichy
7.7k11019


\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, 12:55

Ijon%20Tichy's gravatar image

Ijon Tichy
7.7k11019

bearbeitet 13 Feb, 12:58

Klasse! Damit komme ich weiter...

(13 Feb, 13:00) cis
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×15
×5
×2

Frage gestellt: 13 Feb, 12:29

Frage wurde angeschaut: 659 Mal

Zuletzt aktualisiert: 13 Feb, 13:00