如何使用可选参数重新定义 caption 命令

如何使用可选参数重新定义 caption 命令

我正在写一篇论文,默认情况下整个文档都使用双倍行距。但是,图表上的标题需要单倍行距。我可以这样做

\normalsize \singlespace \caption{ bla bla bla}

其中 singlespace 定义为:

\newcommand{\singlespace}{\renewcommand{\baselinestretch}{1.0}}

这已经过时了,所以我想重新定义标题,我是这样做的:

\let\savedCaption=\caption
\renewcommand{\caption}[1]{\normalsize\singlespace\savedCaption{#1}}

这很好,但有时我想为我的表列表指定可选的表名。所以我这样做,

\renewcommand{\caption}[2][]{\normalsize\singlespace\savedCaption[#2]{#1}}

不幸的是,这将默认表名为空。我真正想要的行为是这样的:

\renewcommand{\caption}[2][#1]{\normalsize\singlespace\savedCaption[#2]{#1}}

...但乳胶对此有抱怨。

有人能帮助我正确地重新定义标题吗?

答案1

Lockstep 已经展示了双倍行距文本中单倍行距字幕的解决方案。但是,我想回答您关于重新定义\caption以便允许使用可选参数的具体问题。

\let\savedCaption=\caption
\renewcommand*{\caption}[2][\shortcaption]{%
  \def\shortcaption{#2}
  \normalsize\singlespace
  \savedCaption[#1]{#2}}

使用此代码,如果没有给出可选参数,#1则为,\shortcaption稍后将其定义为具有 的值#2。如果给出了可选参数,则将使用它,\shortcaption并将其忽略。

答案2

无需重新定义\caption宏即可使用自定义\singlespace,我不会设置空间包。它将“普通”文本的双倍行距与标题的单倍行距结合在一起。

\documentclass{article}

\usepackage[doublespacing]{setspace}

\usepackage[english]{babel}
\usepackage{blindtext}

\begin{document}

\blindtext

\begin{figure}[!ht]
\centering
\rule{1cm}{1cm}
\caption{\blindtext}
\end{figure}

\end{document}

(这盲文包仅用于向示例添加一些虚拟文本。)

答案3

您还可以使用字幕包,它为您提供了许多选项来自定义浮动环境的标题。

仅作为示例,我在论文序言中使用了以下命令:

\usepackage[small,labelfont=bf,hang]{caption}

这使得所有标题都以比文档更小的字体、粗体字体打印,并且hang我选择缩进它们,以便它们悬挂在第一行文本之后。

相关内容