tikztimingtable:foreach 中的数学

tikztimingtable:foreach 中的数学

我有以下代码:

\begin{tikztimingtable}[%
  timing/dslope=0.1,
  timing/.style={x=5ex,y=2ex},
  x=5ex,
  timing/rowdist=3ex,
  timing/name/.style={font=\sffamily\scriptsize}
]
    CLK                   & h 10{c} \\
    \begin{extracode}
        \begin{background}
         \vertlines[lightgray,dotted]{}
         \draw [->,>=latex] (0,\rowdist) -- (\twidth,\rowdist);
         \foreach \n in {0,1,...,\twidth}
           \draw (\n+.5,\rowdist+.2) -- +(0,+.0)
               node [above,inner sep=2pt] {\scalebox{1}{\tiny\n}};
        \end{background}
       \end{extracode}
\end{tikztimingtable}

其结果为: 在此处输入图片描述

我的问题是如何去掉最后的“5”?我尝试使用,\twidth-1但它给出了一个错误。

答案1

这不是一个答案,而是一个截断宏使用的演示——因为 OP 发现它很难使用\twidth-1——你现在可以使用

      \foreach \n in {0,1,...,\twidth}
      \pgfmathtruncatemacro{\j}{\twidth - 1}% added here
       \draw (\n+.5,\rowdist+.2) -- +(0,+.0)
           node [above,inner sep=2pt] {\scalebox{1}{\tiny\n}};

你需要给我们一个可编译的代码来使用

平均能量损失

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node (N1) {N1};
\foreach \i in {2,3,..,5}{
  \pgfmathtruncatemacro{\j}{\i - 1}
  % balance of foreach code
}
\end{tikzpicture}
\end{document}

编辑

宏的替代方法\pgfmathtruncate可以是表达式

  \foreach \n in {1,2,...,\the\numexpr\textwidth-1}

平均能量损失

\documentclass{article}
\usepackage{tikz}
\begin{document}
    \begin{tikzpicture}
        \node (N1) {N1};
        \foreach \i in {2,3,...,\the\numexpr\i-1}{
           %\pgfmathtruncatemacro{\j}{\i - 1}
            % whatever
        }
    \end{tikzpicture}
\end{document}

答案2

您可以使用evaluate和 ,using如以下代码所示:

     \foreach [var=\n, evaluate=\n as \m using int(\n-1)] in {1,...,\twidth}
       \draw (\m+.5,\rowdist+.2) -- +(0,+.0)
           node [above,inner sep=2pt] {\scalebox{1}{\tiny\m}};

在此处输入图片描述

相关内容