
Мой код:
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}[timeSlot/.style={draw, rectangle, minimum size =1cm}]
\foreach [count=\x] [evaluate=\x as \xx using \x-1] \val in {J1, J2}
{
\node (node\x) [timeSlot] at (\x,0) {\val};
\node[above] at (node\x.north west) {\xx};
}
\node[above] at (node2.north east) {2};
\draw[ultra thick] (node1.south west) rectangle (node2.north east);
\end{tikzpicture}
\end{document}
Вывод:
Мне не нужна десятичная точка в выводе выше. Я хочу, чтобы они были просто 0,1 и 2. Что я делаю не так? Как это исправить?
решение1
Одним из простых способов в этом случае является использование функции int()
для получения целого числа.
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}[timeSlot/.style={draw, rectangle, minimum size =1cm}]
\foreach [count=\x] [evaluate=\x as \xx using int(\x-1)] \val in {J1, J2}
{
\node (node\x) [timeSlot] at (\x,0) {\val};
\node[above] at (node\x.north west) {\xx};
}
\node[above] at (node2.north east) {2};
\draw[ultra thick] (node1.south west) rectangle (node2.north east);
\end{tikzpicture}
\end{document}
решение2
Их foreach
можно упростить и использовать целое число ( count=\x
), которое не требует преобразования, чтобы избежать десятичных дробей.
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}[timeSlot/.style={draw, rectangle, minimum size =1cm}]
\foreach [count=\x from 0] \val in {J1, J2}
{
\node (node\x) [timeSlot] at (\x,0) {\val};
\node[above] at (node\x.north west) {\x};
}
\node[above] at (node1.north east) {2};
\draw[ultra thick] (node0.south west) rectangle (node1.north east);
\end{tikzpicture}
\end{document}