循環和輸入@path

循環和輸入@path

我試圖在命令中使用遞歸路徑\input@path,但這似乎是不可能的(據我所知,我使用的是 TexLive 2012 和 Linux)。

所以我有以下想法,在 中進行循環\input@path,但它不起作用,我不知道為什麼...

這就是我所做的:

\newcounter{path}
\setcounter{path}{0}
\def\nom{%
  \ifcase\thepath Cours%
  \or Livres%
  \fi
}
\def\input@path{%
 \loop \ifnum \thepath<3
   {~/Exercices/\nom/Derivee/}
 \stepcounter{path} \repeat
}

如果有人有想法,那將會非常有幫助。

答案1

的格式\input@path是固定的,每個路徑條目都用大括號括起來,沒有進一步的分隔符號。禁止任何其他內容,例如循環。但可以新增條目:

\makeatletter
\newcounter{path}
\setcounter{path}{0}
\newcommand*{\nom}{%
  \ifcase\value{path}%
    Cours% 0
  \or
    Livres% 1
  \or
    Two% 2
  \fi
}
\@ifundefined{input@path}{%
  \let\input@path\@empty
}{}
\loop
\ifnum\value{path}<3 %
  \edef\input@path{%
    \input@path
    {\string~/Exercises/\nom/Derivee/}%
  }%
  \stepcounter{path}%
\repeat
\typeout{input@path: \input@path}
\makeatother

一些備註:

  • 輸入字串由 展開\edef,因為無論如何它們遲早都會被展開。波形符~通常是活動字符,為了防止擴展,它的前綴是 ,\string將活動字符轉換為非活動字符(類別代碼為 12)。

  • 這個範例使用\value{<counter>}代替\the<counter>,因為後一種形式用於列印,並且可能不會總是擴展為純阿拉伯數字。

  • \ifcase中缺少數字 2 的定義。

相關內容