我将 XeLaTeX 与 TeXShop v. 2.47 结合使用,使用 SimSun 和 PMingLiU 字体通常能获得良好的效果。
然而,我发现,在我的一些资料中用于表示零的字形○(U+25CB)在我排版时会输出为空格,无论是通过 Pdftex 还是 TeX 和 DVI,也无论我输入的是字符本身还是显式代码\char"25CB
。
两种字体中都有这个字形,我可以让它出现在屏幕上,并轻松地使用传统文字处理器将其打印到 PDF 和物理打印机上。
知道哪里出了问题或如何解决吗?
代码如下:
%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass{article}
\usepackage{xeCJK}
\usepackage{fontspec}
\setCJKmainfont{PMingLiU} % or SimSun
\begin{document}
Using glyphs: 二○○二年\\
Using codepoint: 二\char"25CB\char"25CB 二年
\end{document}
输出:
答案1
抱歉,您错误地使用了中文符号。
U+25CB(○)是“白色圆圈”,但不是汉字。你应该改用U+3007(〇)表示“表意数字零”。
xeCJK
不将 U+25CB 视为 CJK 符号,因此您的文档中使用拉丁现代罗马字体,并且不输出字形。
这两个符号看起来非常相似。甚至有些中国人误用它们。然而,在某些字体中,例如 Microsoft YaHei,这两个符号看起来完全不同:
CJKnumb
软件包中的 包CJK
通常用于生成 CJK 数字和数字。虽然它不是为 设计的xeCJK
,但xeCJK
有一个CJKnumber
选项可以修复问题并使其可用:
\documentclass{article}
\usepackage[CJKnumber]{xeCJK}
\setCJKmainfont{PMingLiU}
\begin{document}
二〇〇二年
\CJKdigits{2002}年
\end{document}
另外,你可以使用李清的新zhnumber
包裹生成 CJK 数字和数字。它与 配合得很好xeCJK
。例如:
\documentclass{article}
\usepackage{xeCJK}
\setCJKmainfont{PMingLiU}
\usepackage{zhnumber}
\begin{document}
二〇〇二年
\zhdigits{2002}年
\end{document}
zhnumber
是 的现代替代CJKnumb
。我们计划在bundle 和其他中文工具的未来版本中使用zhnumber
来代替。CJKnumb
ctex
对于符号用法,您当然可以随意使用○和●。但是,您应该指定非CJK字体而不是CJK字体。例如,您可以使用\setmainfont
以下符号设置字体:
\documentclass{article}
\usepackage{xeCJK}
\setmainfont{Linux Libertine O} % for solution 1
\newfontfamily\simsun{SimSun} % for solution 2
\setCJKmainfont{SimSun}
\begin{document}
\section{Use a western main font with Unicode symbol support}
十六字令
天。休使圆蟾照客眠。人何在?桂影自婵娟。
○。[●]●○○●●○。○○●,[●]●●○○。(Linux Libertine)
\section{Use a Chinese font as a normal font}
{\simsun ○。[●]●○○●●○。○○●,[●]●●○○。}(SimSun)
\section{Configure xeCJK to treat the symbols as CJK symbols}
\xeCJKsetcharclass{`●}{`●}{1}% DO NOT use this
\xeCJKsetcharclass{`○}{`○}{1}% DO NOT use this
○。[●]●○○●●○。○○●,[●]●●○○。(SimSun, without affecting brackets)
\end{document}
但请记住:不要使用U+25CB作为CJK编号,您应该修改源代码。