명령에 재귀 경로를 넣으려고 하는데 \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
누락되었습니다.