コマンドで再帰パスを使用しようとしています\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
、遅かれ早かれいずれ拡張されるため、 によって拡張されます。チルダは~
通常、アクティブ文字であるため、拡張を防ぐために、アクティブ文字を非アクティブ文字 (catcode 12) に変換する がプレフィックスとして付けられます\string
。この例
\value{<counter>}
では の代わりにを使用しています\the<counter>
。後者の形式は印刷用であり、必ずしも単純なアラビア数字に展開されるとは限らないためです。の番号 2 の定義が
\ifcase
欠落していました。