我在类文件中寻找 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
都会引发错误。