循环和输入@路径

循环和输入@路径

我尝试在命令中使用递归路径\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,因为它们迟早都会被扩展。波浪号~通常是活动字符,为了防止扩展,它以 开头,\string将活动字符转换为非活动字符(catcode 为 12)。

  • 该示例使用\value{<counter>}而不是\the<counter>,因为后一种形式用于打印,并且可能并不总是扩展为简单的阿拉伯数字。

  • \ifcase缺少2 号的定义。

相关内容