我想定义一些循环计算的变量来在 tikzpicture 中绘制路径。变量由一些长度(以 pt 为单位)和(部分)标题定义。例如,假设我们有:
- 5 分,第 1 部分
- 10pt,第 2 部分
- 15pt,第 3 节
这是通过对部分标签进行小计算和参考(以获取标题)来完成的:
\setcounter{sectionCounter}{0}\relax\loop\ifnum\thesectionCounter<3%
\newcount\frameNumber
\frameNumber=...
\dimen1=\textwidth
\multiply\dimen1 by \frameNumber
\divide\dimen1 by \inserttotalframenumber
\edef\progressbarwidthx{\the\dimen1}
\def\titlexyz{\nameref{\secLabel}}
\expandafter\def\csname sWidth\the\value{sectionCounter} \endcsname{\progressbarwidthx}
\expandafter\def\csname sTitle\the\value{sectionCounter} \endcsname{\titlexyz}%
\stepcounter{sectionCounter}\relax\repeat%
\leavevmode%
但是如果我在循环后调用变量
\csname sWidth0 \endcsname
\csname sTitle0 \endcsname; %
\csname sWidth1 \endcsname
\csname sTitle1 \endcsname; %
\csname sWidth2 \endcsname
\csname sTitle2 \endcsname
所有这些都从上次迭代中分配了相同的值:15pt & 第 3 节
在第一次迭代中,sWidth0 和 sTitle0 获得正确的值 5pt 和 Section 1,但在第二次迭代中,sWidth0 和 sWidth1 以及 sTitle0 和 sTitle1 分别获得了相同的值 10pt 和 Section 2。
哪里有问题?
编辑:我手动生成此错误没有发生:
\documentclass{minimal}
\begin{document}
\newcounter{sectionCounter}
\setcounter{sectionCounter}{0}
\expandafter\newcommand\csname ary\the\value{sectionCounter} \endcsname{first}
\expandafter\newcommand\csname arz\the\value{sectionCounter} \endcsname{firstx}
\stepcounter{sectionCounter}
\expandafter\newcommand\csname ary\the\value{sectionCounter} \endcsname{second}
\expandafter\newcommand\csname arz\the\value{sectionCounter} \endcsname{secondx}
\csname ary0 \endcsname
\csname ary1 \endcsname
\csname arz0 \endcsname
\csname arz1 \endcsname
\end{document}
给出
第一的 第二 第一 第二
答案1
尝试
\expandafter\edef\csname sWidth\the\value{sectionCounter} \endcsname{\progressbarwidthx}
\expandafter\edef\csname sTitle\the\value{sectionCounter} \endcsname{\titlexyz}%