这个想法是将命令定义为
\newcommand{\mycommand}{This is the official long name}
我使用它作为\mycommand
在文档中多次使用它。但有时我想要一个简短的名称,例如 \mycommand[short name],其中简称代替这是官方的长名称。这能以简单的方式实现吗?
答案1
比 Peter Grill 的更简单,但使用了相同的理念。
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\definealtcommand}{mmm}{%
\NewDocumentCommand{#1}{s}{\IfBooleanTF{##1}{#3}{#2}}%
}
\definealtcommand{\mycommand}{This is the official long name}{Short name}
\begin{document}
\mycommand\ (Long version)
\mycommand* (Short version)
\end{document}
如果您希望输出中出现空格,请记住在 后面添加{}
或而不添加\
。\mycommand
*
答案2
以下是我的做法。使用\SetMyTitle{<sort title>}{<long title>}
来定义两个都长标题和短标题。然后使用,\MyTitle
您将获得长标题和\MyTitle*
短标题:
另一个选项是\SetMyTitle{<long title>}
通过 定义和访问它\MyTitle
。如果您希望提供一个简短的标题,您可以提供可选参数\MyTitle{<short title>}
。
代码:Recommended
\documentclass{article}
\usepackage{xparse}
\makeatletter
\newcommand*{\@MyLongTitle}{}
\newcommand*{\@MyShortTitle}{}
\newcommand*{\SetMyTitle}[2]{%
\def\@MyLongTitle{#2}%
\def\@MyShortTitle{#1}%
}
\NewDocumentCommand{\MyTitle}{s}{%
{\bfseries\IfBooleanTF{#1}{\@MyShortTitle}{\@MyLongTitle}}%
}%
\makeatother
\begin{document}
\SetMyTitle{ShortTitle}{This is the official long name}
Long title is: \MyTitle
Short title is: \MyTitle*
\end{document}
代码:Alternate
\documentclass{article}
\usepackage{xparse}
\makeatletter
\newcommand*{\@MyTitle}{}
\newcommand*{\SetMyTitle}[1]{%
\def\@MyTitle{#1}%
}
\NewDocumentCommand{\MyTitle}{o}{%
{\bfseries\IfNoValueTF{#1}{\@MyTitle}{#1}}%
}%
\makeatother
\begin{document}
\SetMyTitle{This is the official long name}
Long title is: \MyTitle
Short title is: \MyTitle[Short Title]
\end{document}
答案3
acronym
也可以使用功能强大的软件包来实现此目的:
\documentclass{article}
\usepackage{acronym}
\newacro{my}[short name]{This is the official long name}
\begin{document}
``\acl{my}'' is the long version.
The short version is ``\acs{my}''.
\end{document}
当然,该软件包acronym
还有很多其他功能,请参阅软件包文档。
答案4
还有一个简单的版本:
\documentclass{article}
\newcommand{\mycommand}[1][This is the official long name]{#1}
\begin{document}
\mycommand
\mycommand[Short name]
\end{document}