루프 및 input@path

루프 및 input@path

명령에 재귀 경로를 넣으려고 하는데 \input@path불가능한 것 같습니다(읽어보니 TexLive 2012 및 Linux를 사용하고 있습니다).

그래서 나는 다음과 같은 아이디어를 얻었습니다. 루프를 만들지 \input@path만 작동하지 않고 왜 그런지 모르겠습니다 ...

이것이 내가 한 일입니다:

\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
}

누군가 아이디어가 있다면 매우 도움이 될 것입니다.

답변1

형식은 \input@path고정되어 있으며 각 경로 항목은 추가 구분 기호 없이 중괄호로 둘러싸여 있습니다. 루프와 같은 다른 것들은 금지됩니다. 그러나 항목을 추가하는 것은 가능합니다:

\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

몇 가지 참고사항:

  • 입력 문자열은 \edef조만간 확장되기 때문에 에 의해 확장됩니다. 물결표 는 일반적으로 활성 문자이며 확장을 방지하기 위해 활성 문자를 비활성 문자(catcode 12 사용)로 변환하는 ~접두사가 붙습니다 .\string

  • 이 예 \value{<counter>}에서는 대신을 사용합니다 \the<counter>. 왜냐하면 후자의 형식은 인쇄용이고 항상 일반 아라비아 숫자로 확장되지 않을 수 있기 때문입니다.

  • 숫자 2에 대한 정의가 \ifcase누락되었습니다.

관련 정보