我正在写一篇论文,默认情况下整个文档都使用双倍行距。但是,图表上的标题需要单倍行距。我可以这样做
\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
我选择缩进它们,以便它们悬挂在第一行文本之后。