Ich habe hier eine Methode, eine Matrix bestimmter Größe zu erstellen, die ich später mit nodes fülle (da der Inhalt später berechnet wird). Das funktioniert soweit.

Nun zur Frage: Gibt es vielleicht eine -einfache- Methode, den notwendigen Teil

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
\def\MatrixZeile{ \& \& \\ } % "Spaltenzahl minus 1" \&-Zeichen setzen
\def\MatrixZeilen{% % "Zeilenzahl" Stück eintragen
\MatrixZeile
\MatrixZeile
\MatrixZeile
}%
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

wegzulassen, also gewissermaßen automatisch zu erstellen. Oder auch weitestgehend abzukürzen, z.B. dass dieser aus Angaben wie \def\nMaxZeile{3} \def\nMaxSpalte{4} oder ähnlich folgt.

alt text

Minimalbeispiel:

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
%\documentclass[]{article}
\documentclass[border=5mm]{standalone}
\usepackage[german]{babel}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\def\MatrixZeile{ \& \& \\ } % "Spaltenzahl minus 1" \&-Zeichen setzen
\def\MatrixZeilen{% % "Zeilenzahl" Stück eintragen
\MatrixZeile
\MatrixZeile
\MatrixZeile
}%
\begin{tikzpicture}
\matrix (m) [ % tikz-Matrix
ampersand replacement=\&,
matrix of math nodes,
nodes in empty cells,
row sep = 1.5em,
column sep = 1.5em,
left delimiter = (, right delimiter = ),
]
{%
\MatrixZeilen
};
% Matrix füllen
\node[align=center] at (m-1-1) {11};
\node[align=center] at (m-1-3) {13};
\node[align=center] at (m-2-3) {23};
\node[align=center] at (m-3-1) {31};
\end{tikzpicture}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

gefragt 07 Jan '18, 18:58

cis's gravatar image

cis
9.5k102460491
Akzeptiert-Rate: 29%


Das Problem ist, dass \MatrixZeilen vollständig expandierbar sein muss. Daher kann \MatrixZeilen schonmal kein \foreach enthalten. Am einfachsten kommt man um solche Restriktionen herum, indem man die Schleife in Lua macht, denn \directlua ist immer vollständig expandierbar.

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix (m) [ % tikz-Matrix
ampersand replacement=\&,
matrix of math nodes,
nodes in empty cells,
row sep = 1.5em,
column sep = 1.5em,
left delimiter = (, right delimiter = ),
]
{%
\directlua{\unexpanded{
for i = 1,3 do
for j = 1,3-1 do
tex.sprint("\\&")
end
tex.sprint("\\\\")
end
}}
};
% Matrix füllen
\node[align=center] at (m-1-1) {11};
\node[align=center] at (m-1-3) {13};
\node[align=center] at (m-2-3) {23};
\node[align=center] at (m-3-1) {31};
\end{tikzpicture}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Permanenter link

beantwortet 07 Jan '18, 21:44

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

Schon befürchtet. Geht wohl nur mit Lua. :)

(07 Jan '18, 22:08) cis
Deine Antwort
[Vorschau ausblenden]

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

Frage-Themen:

×731
×58

gestellte Frage: 07 Jan '18, 18:58

Frage wurde gesehen: 5,360 Mal

zuletzt geändert: 07 Jan '18, 22:08

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×