我正在构建一个宏来在文档末尾输出版本。
这是一个简单的宏,它只是将参数放在“版本:”后面,以灰色和斜体显示。
这是 MWE:
\documentclass{article}
\usepackage[svgnames,usenames,dvipsnames,table]{xcolor}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lipsum}
% Insert the project version
\newcommand\insertVersion[1][]{%
\vfill\hfill%
\footnotesize{%
\textcolor{blue}{%
Version: \textit{#1}%
}%
}%
}%
\begin{document}
\lipsum[2]
\insertVersion{1.1.0}
\end{document}
我确信我忽略了一件愚蠢的事情,但我无法理解这个问题......
答案1
当你写作时
\newcommand\insertVersion[1][]{...}
你正在定义一个宏\insertVersion
,它接受一个选修的默认情况下为空的参数。当您使用它作为\insertVersion{1.1.0}
可选参数时,不会给出,因此代码会有效地扩展
\vfill\hfill\footnotesize{\textcolor{blue}{Version: \textit{}}}{1.1.0}
你会得到蓝色版本:后面跟着一个空的斜体文本。版本号仍然存在,\footnotesize
因为这个宏不接受参数,但实际上是一个开关。由于它不在一个组中,字体更改实际上会泄露您的预期用途,并且仍然以较小的字体打印版本号。
更好的定义是
\newcommand*{\insertVersion}[1]{%
\vfill\hfill
\textcolor{blue}{%
\footnotesize Version: \textit{#1}%
}%
}
(还有改进的空间:如果宏在分页符处展开,则可能会失败。)