Kann man irgendwie eine Liste in ein Array umwandeln? Zielgriff: Auf Listenelemente bestimmten Platzes / Nummer.

Öffne in Overleaf
\xdef\List{5,6,7,8}
\xdef\NewArray{\List}
\pgfmathsetmacro{\NewValue}{\NewArray[0]}
\NewValue

geht nicht.

alt text

Öffne in Overleaf
\documentclass[margin=45pt, varwidth]{standalone}
\usepackage{tikz}
\begin{document}
Geht: 
\xdef\MyArray{{1,2,3,4}}
\pgfmathsetmacro{\Value}{\MyArray[2]}
\Value

Geht nicht: 
%\xdef\List{5,6,7,8}
%\xdef\NewArray{\List}
%\pgfmathsetmacro{\NewValue}{\NewArray[0]}
%\NewValue

\end{document}

gefragt 28 Mär '19, 20:34

cis's gravatar image

cis
9.5k75452491
Akzeptiert-Rate: 29%

bearbeitet 28 Mär '19, 20:36

1

Der Unterschied ist die zusätzliche Klammer. \xdef\NewArray{{\List}} sollte funktionieren.

(28 Mär '19, 23:06) Skillmon

Die Lösung von @Skillmon scheint am einfachsten und funktioniert. Komisch, ich dachte, ich hätte das versucht.

(29 Mär '19, 12:17) cis

@cis alternativ hätte auch \xdef\List{{5,6,7,8}} und anschließend \xdef\NewArray{\List} geholfen.

(29 Mär '19, 15:27) Skillmon

@Skillmon Ja, das ist klar; das entspricht ja meinem 1. Beispiel. Bei mir geht es um eine kompliziert erstellte Liste, die ich ggf. später als Array brauchen könnte. Und da möchte ich ungern den ganzen Code der Listenerstellung ändern.

(29 Mär '19, 15:43) cis

Wie sich rausstellte musste ich die Lösung von @Henri verweden...

(29 Mär '19, 16:50) cis

Wie im ersten Beispiel braucht man für den Indexzugriff ein extra Klammerpaar. Dieses kann man ad-hoc hinzufügen:

Öffne in Overleaf
\pgfmathsetmacro{\NewValue}{{\NewArray}[0]}
Permanenter link

beantwortet 28 Mär '19, 21:29

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 02 Apr '19, 07:27

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:

×24
×9
×6

gestellte Frage: 28 Mär '19, 20:34

Frage wurde gesehen: 3,622 Mal

zuletzt geändert: 02 Apr '19, 07:27