loop e entrada@caminho

loop e entrada@caminho

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 \stringque 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 \ifcaseestava faltando.

informação relacionada