LaTeX 排版「句号」or「句点」

句号 or 句点

由于中文空心句号是一个小圈,容易与作为下标的数字 0 或字母 o 混淆。因此,在专业数学书籍、论文排版中,最好是使用实心句点 来代替中文空心句号

以上所说的使用实心句点是指全篇使用, 文章前后不宜出现不同的符号. 从本科毕业设计就坚持使用用句点, 但是, 之前两次数学建模的过程中, 非数学学院的队友感到诧异, 理科和工科还是有差距的吧.

但有时写中文文章, 敲空心句号已成习惯, 所以需要一个省时省力的方法. 以上链接中, 也给了相应解决方案, 就是使用 xeCJK 宏包提供的 Mapping 选项[1]. 之前本站也介绍过使用 xeCJK 宏包实现中英混合排版, 直接上代码

% 该文件使用 xelatex 命令可以编译通过
\documentclass[12pt, a4paper]{article}
\usepackage{fontspec}
\usepackage[slantfont, boldfont]{xeCJK}

\setCJKmainfont[Mapping = fullwidth-stop]{Source Han Serif SC} % 使用开源的思源宋体

% 行距
\RequirePackage{setspace}
\setstretch{1.38}

\begin{document}

说书唱戏劝人方,

三条大路走中央。

善恶到头终有报,

人间正道是沧桑。

\end{document}

使用 xelatex 编译

Note

Mapping 选项 总共有两组

  • Mapping = fullwidth-stop: 将正常句号“。”转换成全角实心句号“.”
    Mapping = full-stop: 作用相反
  • Mapping = han-trad: 于将简体中文转换成繁体中文
    Mapping = han-simp: 作用相反

简体 $\to$ 繁体, 修改上方 $\TeX$ 代码

% \setCJKmainfont[Mapping = fullwidth-stop]{Source Han Serif SC} % 使用开源的思源宋体
\setCJKmainfont[Mapping = han-trad]{Source Han Serif SC} % 使用开源的思源宋体

显示效果如下:

若没有使用 xeCJK 宏包, 也可以在导言区中加入以下代码

% 中文句号改为英文句点
\catcode`\。=\active
\newcommand{}{\ifmmode\text{}\else\fi}

.tex 文件属于纯文本文件, 利用熟悉的编辑器的查找替换也能解决此问题

句点的正确使用方法

上面建议在数学类中英混排文档中使用实心句点 来代替中文空心句号

其实, 在纯英文排版中, 句点也是有使用规范的[2]

  • 英文排版时 $\TeX$ 通常默认句号 . 表示一句话的结束, 因此在处理句号时会留出稍宽一点的水平间距. 但是有些情况下, 句号并不代表句子的结尾, 比如「i.e. a word」和「e.g. a word」. 按照 $\TeX$ 默认规则, 这里的宽度会比正常句中单词之间的间隔稍大一些, 因此我们需要使用 \ (即一个反斜杠 + 一个空格)来消除这个过大的间距: i.e.\ a word 以及 e.g.\ a word.
Two people i.e. you and me...
Two people i.e.\ you and me...
latex 句点
  • 另一种特殊情况下, $\TeX$ 并不会认为句号表示句子的结尾, 那就是句号跟在一个大写字母的后面. 此时 $\TeX$ 会认为这个句号表示人名缩写的间隔符, 因此仍然按照正常间距来排版, 比如「A. Einstein」. 然而这个看似贴心的规则在一些情况下会适得其反, 比如一句话明明以缩略语结尾, $\TeX$ 反而认为这并不是一句话的结尾: 「…… in NBA. He…」. 此时, 排版出的「He」之前的空格会小于正常的句间间距. 这种情况下, 需要使用 \@.(反斜杠 + @ + 句号 + 空格)来取代原先的句号, 即 ... in NBA\@. He... \@ 用来强制告诉 $\TeX$ 这里的的确确是一个句子的结尾.
... played in NBA. He was ...
... played in NBA\@. He was ...
latex 句点
update shortcodes
加载评论