为什么 LaTeX 默认不将字幕居中?

为什么 LaTeX 默认不将字幕居中?

您肯定知道 LaTeX 默认不会将图题居中。大多数情况下,第一行居中,但后面几行的行为与普通文本相同。使用该caption软件包可以轻松实现所有行居中,但这不是默认行为。我一直对此感到疑惑。

一般情况下,使用 LaTeX 的所有默认选项和参数(以及基本类,例如reportbook)可确保文档至少在排版上正确且设计得相当好。可以说,您总是可以改进很多东西,但默认设置确实没问题(我想说),即使排版知识很少也可以使用。除了对于这个标题居中功能(这可以说是默认设置的 LaTeX 文档排版中最令人震惊的功能)。它看起来太不对劲了。

LaTeX 开发人员为什么会做出这样的选择?将标题置于中央真的是一种不好的做法吗?LaTeX 的行为是否“本该如此”?或者这只是一个错误或非自愿的副作用?

答案1

如果标题比文本宽度短,标准 LaTeX 类会将标题居中。以下是来自article.cls(或classes.dtx分别)

\long\def\@makecaption#1#2{%
  \vskip\abovecaptionskip
  \sbox\@tempboxa{#1: #2}%
  \ifdim \wd\@tempboxa >\hsize
    #1: #2\par
  \else
    \global \@minipagefalse
    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
  \fi
  \vskip\belowcaptionskip}

我无法告诉你为什么会出现这种情况。

答案2

这是 LaTeX 的创建者 Leslie Lamport 的设计选择,但也可以做出其他决定,例如您的偏好。Robert Bringhurst 在他的印刷风格的要素遵循默认的 LaTeX 样式,除非他使用侧字幕,而且很少有人会不同意 Bringhurst 的观点。

不使用任何包来使多行标题居中:

\caption{\protect\centering Your multiline text}

答案3

这个问题很难理解。reportbook居中标题;如果标题长度小于\hsize,则标题居中,否则设置为整个行宽上的段落。

作为一个通用类别,这是一个相当自然的设置;如果一个人更喜欢用较窄的段落作为标题,那么长度就是一个风格决定。

\documentclass{book}
\usepackage{showframe}

\begin{document}

\expandafter\def\csname @captype\endcsname{figure}

\caption{This is a short caption}

\caption{This is a longer caption, still on one line}

\caption{This is a much longer caption, which spreads
over two lines; the caption is justified over the whole
line width, but a different setting is not difficult to
obtain.}

\makeatletter
\long\def\@makecaption#1#2{%
  \vskip\abovecaptionskip
  \sbox\@tempboxa{#1: #2}%
  \ifdim \wd\@tempboxa >\hsize
    \makebox[\hsize][c]{%
      \begin{minipage}[t]{.8\hsize}
      #1: #2\par
      \end{minipage}%
    }%
  \else
    \global \@minipagefalse
    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
  \fi
  \vskip\belowcaptionskip}
\makeatother

\caption{This is a much longer caption, which spreads
over two lines; the caption is justified over the whole
line width, but a different setting is not difficult to
obtain.}

\makeatletter
\long\def\@makecaption#1#2{%
  \vskip\abovecaptionskip
  \sbox\@tempboxa{#1: #2}%
  \ifdim \wd\@tempboxa >\hsize
    \makebox[\hsize][c]{%
      \begin{minipage}[t]{.8\hsize}
      \centering
      #1: #2\par
      \end{minipage}%
    }%
  \else
    \global \@minipagefalse
    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
  \fi
  \vskip\belowcaptionskip}
\makeatother

\caption{This is a much longer caption, which spreads
over two lines; the caption is justified over the whole
line width, but a different setting is not difficult to
obtain. Let's add some words to make this longer and
uglier when centering each line.}

\end{document}

caption如您所见,重新定义非常简单。当然,应该优先考虑诸如此类的高级软件包。

在此处输入图片描述

相关内容