цикл и ввод@путь

цикл и ввод@путь

Я пытаюсь добавить рекурсивный путь в команду \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отсутствовало.

Связанный контент