有没有不占用空间的标点符号?

有没有不占用空间的标点符号?

我正在排版 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}

相关内容