我正在排版 17 世纪中国木版画中的一段文字。原文是竖排的,而我将其横排。文本每行的汉字数量相同。文本中还有标点符号,位于每个字符的右下角。这些标点符号不占用任何空间,因此尽管每行的标点符号数量不等,但行长相同。但是,如果我使用 CJK 标点符号 。 作为标点符号,则该标点符号算作一个字符,从而导致行长不等。
能否创建一个标点符号作为下标放置在汉字的右下角,它不会占用行上的任何空间,并保持行的长度一致?
答案1
这是受以下启发的答案[电子邮件保护]。
您可以将标点符号设置为\active
,然后调整其位置。
代码:
%!TEX program = xelatex
\documentclass{article}
\usepackage{xeCJK}
\setCJKmainfont{SimSun}
\makeatletter
\begingroup
\catcode`\,=\active
\@firstofone{\endgroup\protected\def,}{%
\hskip -.4ex\rlap{\raise -.9 ex \hbox{,}}\hskip .4ex\ignorespaces}
\makeatother
\def\ActivePunct{\catcode`\,=\active}
\def\InactivePunct{\catcode`\,= 12 }
\begin{document}
\ActivePunct
中文之间的逗号,不占位置
\InactivePunct
中文之间的逗号,恢复原状
\end{document}
输出结果如下:
您可以按照自己的意愿修改任何其他标点符号。
然而,也存在一些缺点:
- 当特定标点符号位于行末时无法断行;
- 当特定标点符号位于行末时可能会不对齐。
它是不是 完美,请小心使用。
答案2
这可能更简单:
\documentclass{article}
\usepackage{xeCJK}
\setCJKmainfont{SimSun}
\punctstyle{plain}
\def\CJKpunctsymbol#1{\raise-1ex\hbox to 0pt{\kern-.1em#1}}
\begin{document}
道、可道也。非恒道也。
\end{document}