CTeX-org / forum

A temporarily alternate forum of `bbs.ctex.org`
https://t.me/chinesetex
Apache License 2.0
210 stars 16 forks source link

省略号后的右引号可能出现在行首,如何避免? #299

Closed woct0rdho closed 8 months ago

woct0rdho commented 8 months ago

检查

编译环境

描述问题

单独使用xeCJK而不用ctexart时,如果一行末尾附近有一个省略号和一个右引号,可能导致右引号出现在行首。两个省略号和一个右引号也是一样。

使用ctexart时没有发现这个问题。但我在做一些以英文为主的排版,感觉单独使用xeCJK比较方便。

最小工作示例(MWE)

\documentclass{article}
\usepackage{xeCJK}
\begin{document}
壹二三四五六七八九十贰二三四五六七八九十叁二三四五六七八九十肆一…”
\end{document}

用 XeLaTeX 编译后,日志文件输出:

This is XeTeX, Version 3.141592653-2.6-0.999995 (TeX Live 2023) (preloaded format=xelatex)
 restricted \write18 enabled.
entering extended mode
(./main.tex
LaTeX2e <2023-11-01>
L3 programming layer <2023-11-01>
(c:/texlive/2023/texmf-dist/tex/latex/base/article.cls
Document Class: article 2023/05/17 v1.4n Standard LaTeX document class
(c:/texlive/2023/texmf-dist/tex/latex/base/size10.clo))
(c:/texlive/2023/texmf-dist/tex/xelatex/xecjk/xeCJK.sty
(c:/texlive/2023/texmf-dist/tex/latex/l3kernel/expl3.sty
(c:/texlive/2023/texmf-dist/tex/latex/l3backend/l3backend-xetex.def))
(c:/texlive/2023/texmf-dist/tex/latex/ctex/ctexhook.sty)
(c:/texlive/2023/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty)
(c:/texlive/2023/texmf-dist/tex/latex/fontspec/fontspec.sty
(c:/texlive/2023/texmf-dist/tex/latex/l3packages/xparse/xparse.sty)
(c:/texlive/2023/texmf-dist/tex/latex/fontspec/fontspec-xetex.sty
(c:/texlive/2023/texmf-dist/tex/latex/base/fontenc.sty)
(c:/texlive/2023/texmf-dist/tex/latex/fontspec/fontspec.cfg)))
(c:/texlive/2023/texmf-dist/tex/xelatex/xecjk/xeCJK.cfg))

Package xeCJK Warning: Fandol is being set as the default font for CJK text.
(xeCJK)                Please make sure it has been properly installed.

Package fontspec Warning: Font "FandolSong-Regular" does not contain requested
(fontspec)                Script "CJK".

(./main.aux) (c:/texlive/2023/texmf-dist/tex/latex/base/ts1cmr.fd) [1]
(./main.aux) )
Output written on main.pdf (1 page).
Transcript written on main.log.

PDF显示: scrshot

我还做了这些尝试

按照 #298 尝试修改LongPunctMiddlePunct,没有解决问题。

muzimuzhi commented 8 months ago

Duplicate of https://github.com/CTeX-org/ctex-kit/issues/456

woct0rdho commented 8 months ago

好的,我可以给我们生成的tex文件写个后处理的脚本来自动加上\nobreak。不过为什么用了ctexart就可以避免这个问题呢?

muzimuzhi commented 8 months ago

ctex 宏包/文档类默认修改了很多东西,对你的例子最有影响的应该是 scheme=chinese 会把正文字号设成五号字(10.5bp)和设置 \parindent 为两个汉字宽度。以下使用 scheme=plain 的 ctex 例子,能复现问题(指,得到和你发的截图一样的断行位置)。

% !TeX program = xelatex
\documentclass{article}
\usepackage[fontset=fandol, scheme=plain]{ctex}
%\usepackage{xeCJK}
\begin{document}
壹二三四五六七八九十贰二三四五六七八九十叁二三四五六七八九十肆一…”
\end{document}

PS: 总是可以用 \showbox\showoutput 来查看某个盒子、整个文档在输出时的差异。

woct0rdho commented 8 months ago

看样子在合适的字号和字数下就会出现这个问题,我先用\nobreak来解决吧。