Ich versuche, einen rekursiven Pfad im Befehl einzufügen \input@path
, aber das scheint unmöglich zu sein (soweit ich weiß, verwende ich TexLive 2012 und Linux).
Also ich hatte folgende Idee, eine Schleife einzubauen \input@path
, aber das funktioniert nicht und ich weiß nicht warum ...
Das habe ich getan:
\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
}
Wenn jemand eine Idee hat, wäre das sehr hilfreich.
Antwort1
Das Format \input@path
ist festgelegt, jeder Pfadeintrag wird ohne weitere Trennzeichen in geschweifte Klammern gesetzt. Sonstiges wie Schleifen ist verboten. Es ist jedoch möglich, Einträge hinzuzufügen:
\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
Einige Anmerkungen:
Die Eingabezeichenfolgen werden mit erweitert
\edef
, da sie früher oder später sowieso erweitert werden. Die Tilde~
ist normalerweise ein aktives Zeichen. Um eine Erweiterung zu verhindern, wird ihr ein vorangestellt,\string
das das aktive in ein nicht aktives Zeichen umwandelt (mit Catcode 12).Im Beispiel wird
\value{<counter>}
anstelle von verwendet\the<counter>
, da die letztere Form zum Drucken vorgesehen ist und sich nicht immer in eine einfache arabische Zahl erweitern lässt.Die Definition für Nummer 2
\ifcase
fehlte.