我試圖在命令中使用遞歸路徑\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 的定義。