A fonte a seguir funciona, conforme mostrado.
Existe uma maneira de alterar o \foreach
bloco de código comentado para que ele faça a mesma coisa que as duas linhas separadas acima dele?
Se comentado, o \foreach
bloco (conforme corrigido) produz os dois pontos, mas o rótulo abaixo do primeiro ponto está errado: ele é exibido literalmente como (1/pi, 0) enquanto eu quero que ele mostre o resultado de $(1/ \pi, 0)$, ou seja, (1/π,0).
(Este é um exemplo de brinquedo. Na prática, haverá mais pontos, daí o desejo de usar uma construção de loop.)
\documentclass[tikz,border=0pt]{standalone}
\begin{document}
\begin{tikzpicture}[domain=0:1,x=7cm,y=2cm]
% axis:
\draw[->,gray,thick] (-0.2,0) -- (1.15,0) node[right,black] {$x$};
% points:
\fill (1/pi, 0) circle[radius=2pt] node[below] {$(1/\pi, 0)$};
\fill (1, 0) circle[radius=2pt] node[below] {$(1, 0)$};
% The following does NOT work!
% \foreach \Point in {(1/pi,0), (1,0)} {
% \fill \Point circle[radius=2pt] node[below] {$\Point$};
% };
\end{tikzpicture}
\end{document}
Responder1
Eu sugeriria apenas ajustar o \foreach
loop com uma segunda variável onde você especificou o tet para ser digitado. Se a segunda variável não for especificada na lista, a variável anterior será usada.
Isso permite que você faça
\foreach \Point/\Label in {{(1/pi, 0)}/{(1/\pi, 0)}, (1, 0)}
\fill \Point circle[radius=2pt] node[below] {$\Label$};
e ambos \Point
e \Label
estarão (1, 0)
na segunda iteração.
No entanto, você pode usar o pacote do LaTeX3 l3regex
para substituir texto como pi
na sequência de controle \pi
. Se for apenas pi
/ \pi
isso deveria servir, mas com exemplos mais complexos não será tão fácil. A segunda entrada deveria realmente ser 11° e não apenas 11, não deveria?
O xstring
pacote possui \StrSubstitute
, mas usá-lo com mais de uma substituição será mais tedioso.
Código
\documentclass[tikz]{standalone}
\ExplSyntaxOn
\DeclareDocumentCommand{\tikzmathreplacer}{m}{
\tl_set:Nx \l_tmpa_tl { #1 }
\regex_replace_case_all:nN {
{ pi }{ \c{pi} }
{ sin }{ \c{sin} }
{ * }{ }
} \l_tmpa_tl
\tl_use:N \l_tmpa_tl
}
\ExplSyntaxOff
\begin{document}
\begin{tikzpicture}[domain=0:1,x=7cm,y=2cm]
\draw[->,gray,thick] (-0.2,0) -- (1.15,0) node[right,black] {$x$};
\foreach \Point/\Label in {{(1/pi, 0)}/{(1/\pi, 0)}, (1, 0)}
\fill \Point circle[radius=2pt] node[below] {$\Label$};
\end{tikzpicture}
\begin{tikzpicture}[domain=0:1,x=7cm,y=2cm]
\draw[->,gray,thick] (-0.2,0) -- (1.15,0) node[right,black] {$x$};
\foreach \Point in {(1/pi, 0), ({pi * sin(11)}, 0), (1, 0)}
\fill \Point circle[radius=2pt] node[below] {$\tikzmathreplacer{\Point}$};
\end{tikzpicture}
\end{document}