Schleife und input@path

Schleife und input@path

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@pathist 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, \stringdas 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 \ifcasefehlte.

verwandte Informationen