如何更改新命令的顺序

如何更改新命令的顺序

作为一名 LaTeX 的业余爱好者,很抱歉,如果不讲清楚整个故事,我不知道该如何提问:

在大型文档中,我创建了一个相当简单的命令来引用(古典拉丁文)作者,遵循的惯例与我引用现代作者(我使用 BibTeX 等)的惯例不同。这是我使用的命令:

\newcommand{\citeCL}[3]{#1, \emph{#2}, \textbf{#3}}
%\citeCL{author}{text}{chapter}

作为前两个参数,我使用了作者姓名和文本标题列表中的其他命令(因为我多次使用每个名字,如果每次都完整地写出来可能会不一致),例如,

\newcommand{\Per}{N. Per.}
\newcommand{\PerRud}{Rud. gram.}

在文档中,我可以这样调用 cite 命令:

\citeCL{\Per}{\PerRud}{1117}

我在脚注和引用环境中都使用了此引用命令:

\newcommand{\QuoteCL}[4]{
\vspace{5pt}
\begin{quote}\itemsep1pt\parskip0pt\parsep0pt\begin{spacing}{1}
#4 \par\hspace*{\fill}\footnotesize{\citeCL{#1}{#2}{#3}}
\end{spacing}
\end{quote}
\vspace{-20pt}
}

在文档中,我使用与相同的三个参数调用该命令\citeCL,另外还添加要引用的文本,例如,

\QuoteCL{\Per}{\PerRud}{§ 1119}{Quis maxime proponendus est quem studeant adolescentes imitari? Marcus Cicero.}

所有这些都很好用,我在整个论文中都用过它。现在,我希望区分作者姓名和标题在脚注和引文中的书写方式,在脚注中使用缩写形式,在引文中使用新的长格式。我的直觉、天真的方法是这样的:

\newcommand{\citeCL}[3]{#1, \emph{#2}, \textbf{#3}}
% Original command now used for footnotes

\newcommand{\citeCLLong}[3]{#1Long, \emph{#2Long}, \textbf{#3}}
% New command to be called by the \quoteCL command.

\newcommand{\Per}{N. Per.}
\newcommand{\PerLong}{Niccolò Perotti}
\newcommand{\PerRud}{Rud. gram.}
\newcommand{\PerRudLong}{Rudimenta grammatices}
% Duplicating the list of names and titles, adding a long version to be called by the \citeCLLong:

\newcommand{\QuoteCL}[4]{
\vspace{5pt}
\begin{quote}\itemsep1pt\parskip0pt\parsep0pt\begin{spacing}{1}
#4 \par\hspace*{\fill}\footnotesize{\citeCLLong{#1}{#2}{#3}}
\end{spacing}
\end{quote}
\vspace{-20pt}
}
% The command is changed to call the new \citeCLLong

\begin{document}
\QuoteCL{\Per}{\PerRud}{§ 1119}{Quis maxime proponendus est quem studeant adolescentes imitari? Marcus Cicero.}
\end{document}

现在回答我的问题:我希望在( ) 中添加Long参数可以让 LaTeX 选择,例如,而不是仅仅从我的作者列表中选择,即使我使用参数调用该命令。在决定是否读取或之前添加该部分。但它写的是,例如,“N. Per.Long”,而不是选择=“Niccolò Perotti”。\citeCLLong#1Long, \emph{#2Long}\PerLong\Per\quoteCL\PerLong\Per\PerLong\PerLong

能不能以某种方式做到这一点,或者有没有其他更聪明的解决方案,不需要我通读整篇论文,更改所有引文中的所有论点,但可以从序言中进行控制?这样可以让我在脚注中的引用保持相同的原始形式?

答案1

使用条件;使用新命令,您可以以连贯的方式定义具有“短”和“长”形式的命令。然后\citeCL可以\citeCLLong使用

\documentclass{article}
\usepackage[utf8]{inputenc}

\newif\ifCLLong

\newcommand{\citeCL}[3]{\CLLongfalse #1, \emph{#2}, \textbf{#3}}

\newcommand{\citeCLLong}[3]{\CLLongtrue #1, \emph{#2}, \textbf{#3}}

\newcommand{\QuoteCL}[4]{%
\begin{quote}
#4 \par\hspace*{\fill}\footnotesize\citeCLLong{#1}{#2}{#3}
\end{quote}
}

% Abstraction for easing the definition    
\newcommand{\newshortlongcommand}[3]{\newcommand{#1}{\ifCLLong #3\else #2\fi}}

\newshortlongcommand{\Per}{N. Per.}{Niccolò Perotti}
\newshortlongcommand{\PerRud}{Rud. gram.}{Rudimenta grammatices}

\begin{document}

Testo introduttivo\footnote{\citeCL{\Per}{\PerRud}{§ 1119}}

\QuoteCL{\Per}{\PerRud}{§ 1119}{Quis maxime proponendus est quem studeant adolescentes imitari? Marcus Cicero.}
\end{document}

\end{document}

(我简化了的定义\QuoteCL,以摆脱spacing不必要的事情。)

通过这种方式,您也可以直接输入参数而不必担心;例如

\QuoteCL{Niccolò Perotti}{Rudimenta Grammatices}{§ 1119}{...}

效果是一样的。

在此处输入图片描述

答案2

将前两个参数更改为文本字符串,然后使用构造\csname \endcsname来实现您的愿望。(注意:我关闭了间距环境,因为我不知道哪个包中有它)

\documentclass{article}
\usepackage[utf8]{inputenc}

\newcommand{\citeCL}[3]{\csname#1\endcsname, \emph{\csname#2\endcsname}, \textbf{#3}}
% Original command now used for footnotes

\newcommand{\citeCLLong}[3]{\csname#1Long\endcsname,
\emph{\csname#2Long\endcsname}, \textbf{#3}}
% New command to be called by the \quoteCL command.

\newcommand{\Per}{N. Per.}
\newcommand{\PerLong}{Niccolò Perotti}
\newcommand{\PerRud}{Rud. gram.}
\newcommand{\PerRudLong}{Rudimenta grammatices}
% Duplicating the list of names and titles, adding a long version to be called by the \citeCLLong:

\newcommand{\QuoteCL}[4]{
\vspace{5pt}
\begin{quote}\itemsep1pt\parskip0pt\parsep0pt%
%\begin{spacing}{1}%
#4 \par\hspace*{\fill}\footnotesize{\citeCLLong{#1}{#2}{#3}}
%\end{spacing}
\end{quote}
\vspace{-20pt}
}
% The command is changed to call the new \citeCLLong

\begin{document}
\QuoteCL{Per}{PerRud}{§ 1119}{Quis maxime proponendus est quem studeant adolescentes imitari? Marcus Cicero.}

\vspace{6em}
\citeCL{Per}{PerRud}{§ 1119}
\end{document}

在此处输入图片描述

相关内容