Estou tentando ter caminho recursivo no comando \input@path
, mas parece impossível (pelo que li, estou com o TexLive 2012 e Linux).
Então tive a seguinte ideia, fazer um loop in \input@path
, mas não funciona e não sei porque...
Isto é o que eu fiz:
\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
}
Se alguém tiver uma ideia, será muito útil.
Responder1
O formato de \input@path
é fixo, cada entrada de caminho é cercada por chaves sem mais separadores. Qualquer outra coisa, como loops, é proibida. Mas é possível adicionar entradas:
\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
Algumas observações:
As strings de entrada são expandidas por
\edef
, porque mais cedo ou mais tarde elas serão expandidas de qualquer maneira. O til~
geralmente é um caractere ativo, para evitar expansão, é prefixado por\string
que converte o caractere ativo em um caractere não ativo (com catcode 12).O exemplo usa
\value{<counter>}
em vez de\the<counter>
, porque o último formato é destinado à impressão e nem sempre pode ser expandido para um número arábico simples.A definição para o número 2
\ifcase
estava faltando.