La siguiente fuente funciona, como se muestra.
¿Hay alguna manera de modificar el bloque de código comentado \foreach
para que haga lo mismo que las dos líneas separadas que se encuentran arriba?
Si se comenta, el \foreach
bloque (corregido) produce los dos puntos, pero la etiqueta debajo del primer punto es incorrecta: se muestra literalmente como (1/pi, 0) mientras que quiero que muestre el resultado de $(1/ \pi, 0)$, es decir, (1/π,0).
(Este es un ejemplo de juguete. En la práctica, habrá más puntos, de ahí el deseo de utilizar una construcción en bucle).
\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}
Respuesta1
Sugeriría simplemente ajustar el \foreach
bucle con una segunda variable donde especificarías el tet que se va a componer. Si la segunda variable no se especifica en la lista, se utilizará la variable anterior.
Esto le permite hacer
\foreach \Point/\Label in {{(1/pi, 0)}/{(1/\pi, 0)}, (1, 0)}
\fill \Point circle[radius=2pt] node[below] {$\Label$};
y ambos \Point
y \Label
estarán (1, 0)
en la segunda iteración.
Sin embargo, puede utilizar l3regex
el paquete LaTeX3 para reemplazar texto como pi
con la secuencia de control \pi
. Si es solo pi
/ \pi
esto debería funcionar, pero con ejemplos más complejos no será tan fácil. La segunda entrada realmente debería decir 11° y no sólo 11, ¿no es así?
El xstring
paquete tiene \StrSubstitute
pero usarlo con más de un reemplazo será más 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}