我想了解是否有一种简单的方法可以在 LaTeX 中实现以下功能:
我想创建 mycustomsty.sty,并将其调用如下:
\usepackage[author={string1, string2, ..., stringN}]{mycustomsty}
其输出结果与简单输入以下命令相同:
\author{string1 \and string2 \and ... \and stringN}
直接在 TeX 文件中。
答案1
- 包裹
filecontents
用于包含一个文件(平均能量损失)。当然你可以把sty放在一个单独的文件中。 - 使用
kvoptions
将字符串传递给包。 - 使用
xstring
进行字符串替换。 - 为了能够用命令 (
\and
) 替换字符串,witch 不应被扩展,但也要将输入字符串解释为\expandarg
使用的扩展命令。(来自xstring
文档:“在这种情况下,每个参数的第一个标记都会扩展一次,而所有其他标记保持不变”)
代码:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{myauthorgenerator.sty}
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesClass{myauthorgenerator}[2018/06/03]
\RequirePackage{kvoptions}
\RequirePackage{xstring}
\DeclareStringOption{author}[unknown]
\ProcessKeyvalOptions*
\author{%
\saveexpandmode\expandarg%
\StrSubstitute{\myauthorgenerator@author}{,}{\and }%
\restoreexpandmode%
}
\end{filecontents}
\usepackage[author={Frodo,Sam,Pippin, Merry}]{myauthorgenerator}
\title{Title}
\begin{document}
\maketitle
\end{document}
结果: