在 ctex 类中自定义行距

在 ctex 类中自定义行距

我的目标

我最近开始使用这些ctex类将我的一些英文文章转换成中文。关于行距,我希望实现以下目标:

  1. 正文应该有一个领导字体大小的 150%。
    • 这里的 leading 指的是两个连续的拉丁字母基线之间的距离,它等于 CJK 字符的两个连续的表意字符基线之间的距离。另一方面,em-box 的大小由字体大小决定。
  2. 表格和图形的标题也应如此(以防标题很长)。
  3. 当然,还有脚注、引文、引语等等。
  4. 然而,我确实不是希望我的表格的行能够被拉伸,因为通常中文只出现在标题中,而表格内容只是数字。
    • 我可以用来\renewcommand{\arraystretch}{<factor>}%伸展。
  5. 我还想避免拉伸显示的数学周围的垂直跳跃。
  6. 添加(2018 年 6 月 4 日):由于数学公式大多以拉丁文/希腊文书写,因此其行距应遵循英文排版规则,即 120%。

我的问题

我如何才能实现上述描述?我希望有一个解决方案可以让我设置正文、标题、脚注等的行距,分别地

我为什么想要这个?

与英语排版不同,字体大小的前 120–145%建议,中文(或日文、韩文)通常需要 150–180% 的字体大小。这是因为 CJK 字形的侧轴承与拉丁语相比,中文需要更多的空间(报纸除外,报纸对中文的建议值为 125–133%)。

这是从根本上不同于丑陋的大学式要求. 普通的中文脚注应该行距比字体大小的 120% 略大一些。

另外,请注意我避免使用诸如、等术语single spacing1.5 spacing我认为专业人士使用点大小来表示行距,或者至少使用它与字体大小的比例,而不是一些晦涩的<multiple> spacing


尝试 1

首先,我尝试\linespread{1.25}\selectfont

  • 根据ctex文档的代码行 3747:,{ \dim_to_decimal:n { (#2) * \c_six / \c_five } }初始行距设置为每一个对应的字体大小。150% 除以 120% 等于1.25

但这种传播一切

leading包相同:它只是让我免于进行计算。在文档中\documentclass[zihao=-4]{ctexart}\normalsize命令将字体大小设置为12bp,因此我可以发出\leading{18bp}。但由于内部\leading使用\linespread,这也会传播所有内容。


第二次尝试

然后我发现这个答案建议结合使用setspacecaption包:

% Preamble
%\usepackage{setspace}
\usepackage[nodisplayskipstretch]{setspace} % In my case
\setstretch{1.25} % 1.5/1.2 = 1.25
\usepackage{caption}
\captionsetup{font={stretch=1.25}}

涵盖了我的目标 1、2、4 和 5。对于脚注,我找到了这个问题在哪里

% Preamble
\let\oldfootnote\footnote
%\renewcommand{\footnote}[1]{\oldfootnote{\onehalfspacing #1}}
\renewcommand{\footnote}[1]{\oldfootnote{\setstretch{1.25} #1}} % In my case

是原帖作者建议的。这种方法效果很好,直到同一页出现第二个脚注。两个脚注块的间距不一致。我想我还必须进行调整,\footnotesep以使脚注的间距均匀,但要调整多少呢?

  • 根据ctex文档的代码行 3905:\dim_set:Nn \footnotesep { \dim_use:N \box_ht:N \strutbox }并且\strutbox默认高度为.7\baselineskip。我猜\setlength{\footnotesep}{.875\baselineskip}可以完成这项工作?
  • 已编辑(2018 年 6 月 2 日):设置脚注分隔时显然还有其他因素在起作用。请参阅下面的两个不同的 MWE。

最小工作示例

已编辑(2018 年 6 月 2 日):我太天真了,以为英文和中文输入的排版输出是相同的。以下英文/拉丁文 MWE 说明了这一点\footnotesep需要增加

\documentclass[zihao=-4,scheme=plain]{ctexart} % Do not use Chinese headings
\usepackage{blindtext} % Use Latin blind text, in case you don't have Chinese font.
\usepackage{booktabs}
\newcommand*{\bodytextlinespread}{1.25} % 1.5/1.2 = 1.25
\newcommand*{\captionlinespread} {1.25} % 1.5/1.2 = 1.25
\newcommand*{\footnotelinespread}{1.25} % 1.5/1.2 = 1.25
% Set body text line spacing without stretching displayed math.
\usepackage[nodisplayskipstretch]{setspace}
\setstretch{\bodytextlinespread}
% Patch caption line spacing.
\usepackage{caption}
\captionsetup{font={stretch=\captionlinespread}}
% Patch footnote line spacing.
\let\oldfootnote\footnote
\renewcommand{\footnote}[1]{%
  \oldfootnote{\setstretch{\footnotelinespread} #1}}
  % The mistakenly added space before #1 should have been dropped.
\begin{document}
\blindtext\footnote{\blindtext}
\[
e^{i \pi} + 1 = 0.
\]
Aha! Another footnote\footnote{\blindtext}.
\begin{table}[h]
\caption[Short caption]{A table with a really really really really
 really really really really really really really really really 
 really really really long caption.}
\centering%
\begin{tabular}{c c}
\toprule
Chinese & Word \\
\midrule
  $10$  & $20$ \\
  $10$  & $20$ \\
\bottomrule
\end{tabular}
\end{table}
\blindtext
\begin{quote}
\blindtext
\end{quote}
\blindtext
\end{document}

但一位中国 MWE 建议\footnotesep应该减少(差异很细微,但很明显):

\documentclass[zihao=-4]{ctexart} % Use Chinese headings
\usepackage{zhlipsum} % Use Chinese dummy text.
\usepackage{booktabs}
\newcommand*{\bodytextlinespread}{1.25} % 1.5/1.2 = 1.25
\newcommand*{\captionlinespread} {1.25} % 1.5/1.2 = 1.25
\newcommand*{\footnotelinespread}{1.25} % 1.5/1.2 = 1.25
% Set body text line spacing without stretching displayed math.
\usepackage[nodisplayskipstretch]{setspace}
\setstretch{\bodytextlinespread}
% Patch caption line spacing.
\usepackage{caption}
\captionsetup{font={stretch=\captionlinespread}}
% Patch footnote line spacing.
\let\oldfootnote\footnote
\renewcommand{\footnote}[1]{%
  \oldfootnote{\setstretch{\footnotelinespread} #1}}
  % The mistakenly added space before #1 should have been dropped.
\begin{document}
\zhlipsum*[1]\footnote{\zhlipsum*[2]}
\[
e^{i \pi} + 1 = 0.
\]
Aha! Another footnote\footnote{\zhlipsum*[3]}. \zhlipsum*[4]
\begin{table}[h]
\caption[Short caption]{A table with a really really really really
 really really really really really really really really really 
 really really really long caption.}
\centering%
\begin{tabular}{c c}
\toprule
Chinese & Word \\
\midrule
  $10$  & $20$ \\
  $10$  & $20$ \\
\bottomrule
\end{tabular}
\end{table}
\zhlipsum*[5]
\begin{quote}
\zhlipsum*[6]
\end{quote}
\zhlipsum*[7]
\end{document}

相关内容