将数字字符串传递给 setcounter

将数字字符串传递给 setcounter

这是我当前的 MWE:(注意,您必须将文件保存为 lec-05.tex)

\documentclass{article}

\usepackage{currfile}
\usepackage{substr}

\def\fulllecnum{
  \BehindSubString{lec-}{\scantokens\expandafter{\currfilebase\noexpand}}
}
\newcommand\lecnum{
  \IfBehindSubStringEmpty{lec-0}{\scantokens\expandafter{\currfilebase\noexpand}}{
    \BehindSubString{lec-}{\scantokens\expandafter{\currfilebase\noexpand}}
  }{
    \BehindSubString{lec-0}{\scantokens\expandafter{\currfilebase\noexpand}}
  }
}

\setcounter{section}{\lecnum}

\begin{document}
  \section{HI}
\end{document}

错误如下:

! Missing number, treated as zero.
<to be read again> 
                   \let 
l.17 \setcounter{section}{\lecnum}
                                  
? 

我如何将其转换\lecnum为整数然后将其传递给\setcounter{section}{}

答案1

感谢@David Carlisle 指出这一点。

\makeatletter
\def\@lecnum{}
\newcommand\lec[1]{%
  \ifnum #1<10 %
    \def\@lecnum{0#1}%
  \else
    \def\@lecnum{#1}%
  \fi
%
  \setcounter{section}{#1}%
  \renewcommand\thesubsection{#1.\arabic{subsection}}%
%
  \input{lectures/lec-\@lecnum.tex}%
}
\makeatother

lectures我在名为lec-01.texlec-02.tex、的文件夹中有文件...。然后,我可以像这样调用此命令\lec{1},它将节号设置为1并输入lectures/lec-01.tex文件。

我采用了复杂的方法,首先通过对文件名执行正则表达式来获取讲座编号,然后尝试将该字符串转换为数字来设置章节编号。

相关内容