Присвоение диапазона значений переменной в tikz - PullRequest
1 голос
/ 28 сентября 2019

Я хотел бы присвоить диапазон значений переменной в LaTeX для использования в цикле в среде tikzpicture.

В приведенном ниже коде я хотел бы заменить эти строки

\begin{tikzpicture}
\foreach \x in {1, 3, 5, 7}
    \foreach \y in {2, ..., 5}{

с чем-то вроде

first_range = {1, 3, 5, 7}
second_range = {2, ..., 5}
\begin{tikzpicture}
\foreach \x in first_range
    \foreach \y in second_range{

Полный раздел исполняемого кода приведен ниже:

\documentclass{article}
\usepackage{tikz}
\usepackage{ifthen}

\begin{document}

\begin{tikzpicture}
\foreach \x in {1, 3, 5, 7}
    \foreach \y in {2, ..., 5}{
        \ifthenelse{\(\x=1 \OR \x=7\) \AND \y = 3}{
            %\filldraw[fill=white] (\x, \y) circle (0.2);
            \node[] at (\x, \y) {\vdots};
        }{
            \filldraw[fill=red] (\x, \y) circle (0.2);      
        }   
    }
\end{tikzpicture}

\end{document}

1 Ответ

1 голос
/ 28 сентября 2019

Вы можете сохранить список в макросе:

\documentclass{article}
\usepackage{tikz}
\usepackage{ifthen}

\def\first{1, 3, 5, 7}
\def\second{2, ..., 5} 

\begin{document}

\begin{tikzpicture}
\foreach \x in \first
    \foreach \y in \second {
        \ifthenelse{\(\x=1 \OR \x=7\) \AND \y = 3}{
            %\filldraw[fill=white] (\x, \y) circle (0.2);
            \node[] at (\x, \y) {\vdots};
        }{
            \filldraw[fill=red] (\x, \y) circle (0.2);      
        }   
    }
\end{tikzpicture}

\end{document}
...