Я пытаюсь добавить рекурсивный путь в команду \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>
, поскольку последняя форма предназначена для печати и не всегда может раскрываться до простой арабской цифры.Определение для числа 2
\ifcase
отсутствовало.