LaTeX TeXt 放置运动

LaTeX TeXt 放置运动

我在类文件中寻找 TeXT Placement movememnt。要求是存储值并打印在其他地方。

我的 LaTeX 代码是:

\documentclass{threecolumn}
\usepackage{ifthen}
\begin{document}
\jnl{5}
\end{document}

我的课程档案是

\def\jnl#1{\protected@edef\@jnl{#1}}
\def\@jnl#1{%
\ifthenelse{\equal{#1}{1}}{Sample 1}{}%
\ifthenelse{\equal{#1}{2}}{Sample 2}{}%
\ifthenelse{\equal{#1}{3}}{Sample 3}{}
\ifthenelse{\equal{#1}{4}}{Sample 4}{}
\ifthenelse{\equal{#1}{5}}{Sample 5}{}
}

如果\jnl{2}发现需要将\jnl{Sample 2}和改为放置在之后\maketitle。如何在类文件中实现这一点?

答案1

您想\protected@edef以不同的方式使用;使用该代码, 的定义\@jnl将永远不会被使用。此外,\ifthenelse不能在 中使用\protected@edef

\documentclass{article}

\makeatletter % this shouldn't be used in the class file
\newcommand{\jnl}[1]{%
  \protected@edef\@jnl{%
    \ifcase#1%
     \relax\noexpand\threecolumn@error@jnl{#1}\or
     Sample 1\or
     Sample 2\or
     Sample 3\or
     Sample 4\or
     Sample 5\else
     \relax\noexpand\threecolumn@error@jnl{#1}\fi
  }
}
\newcommand\threecolumn@error@jnl[1]{%
  \ClassError{threecolumn}
    {Invalid argument to \protect\jnl}
    {The argument to \protect\jnl\space should be
     between 1 and 5 (included)}%
}
\makeatother % this shouldn't be used in the class file

\jnl{0}
\jnl{1}
\jnl{5}
\jnl{6}

在第一种和最后一种情况下,\@jnl都会引发错误。

相关内容