Estoy intentando tener una ruta recursiva en el comando \input@path
, pero parece imposible (según leí, estoy con TexLive 2012 y Linux).
Entonces tuve la siguiente idea, hacer un bucle \input@path
, pero no funciona y no sé por qué...
Esto es lo que hice :
\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
}
Si alguien tiene una idea, será de gran ayuda.
Respuesta1
El formato de \input@path
es fijo, cada entrada de ruta está rodeada por llaves sin más separadores. Cualquier otro material, como bucles, está prohibido. Pero es posible agregar 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
Algunas observaciones:
Las cadenas de entrada se expanden con
\edef
, porque tarde o temprano se expanden de todos modos. La tilde~
suele ser un carácter activo; para evitar la expansión, tiene el prefijo\string
que convierte el carácter activo en un carácter no activo (con código cat 12).En el ejemplo se utiliza
\value{<counter>}
en lugar de\the<counter>
, porque esta última forma está destinada a la impresión y es posible que no siempre se expanda a un número arábigo simple.\ifcase
Faltaba la definición del número 2 .