我在 Ubuntu 14.04 上使用 xeCJK 进行中文文档排版。我使用:texmaker 4.4.1,包括 fontspec 包。我使用 XeLatex 进行编译,在过去的 2-3 年里,总体来说没有什么问题。
编译少量汉字时出现问题。例如:為符合要求,但爲在 pdf 中会给我一个 。有什么建议吗?
目前,我必须通过我的各种 tex 文档搜索爲,将其替换为為,以确保我的 pdf 输出中不会出现 。
有人知道为什么会这样吗?我该如何解决这个问题?
\documentclass[a4paper, 11pt]{memoir}
%**********************SUPPRESS PAGE NBR
%\pagenumbering{gobble}
\renewcommand{\contentsname}{目錄}
\renewcommand{\chaptername}{章}
\newcommand{\CCC}[1]{天主教教理, {#1}}
\newcommand{\DV}[1]{『天主的啟示』教義憲章, {#1}}
\newcommand{\STH}[3]{『神學大全』,第{#1}冊,第{#2}題,第{#3}節}
%**********************
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage{url}
%\usepackage{qtree}
\usepackage[framemethod=default]{mdframed}
\usepackage{pdfpages}
\usepackage{xcolor}
\usepackage{fontspec}
\usepackage{textcomp}
\usepackage{bbding}
\usepackage{dingbat}
\usepackage{tabularx}
\usepackage{centernot}
%\usepackage{endnotes}
%\let\footnote=\endnote
\usepackage[backend=biber,backref=true,hyperref=true,citestyle=numeric,bibstyle=authortitle]{biblatex}
%****************************************
\usepackage{pifont}% http://ctan.org/pkg/pifont
\newcommand{\cmark}{\ding{51}}%check mark; right
\newcommand{\xmark}{\ding{55}}%cross mark; wrong
%****************************************
%**************************************INSERT COMMENT NOTES
%\usepackage[disable]{todonotes} %HIDE REMARKS
\usepackage[draft,linecolor=green!70!white, backgroundcolor=blue!20!white, bordercolor=red]{todonotes} %SHOW REMARKS
%YOU CAN INSERT A LAST LINE AT THE END OF THE DOCUMENT \listoftodos
%**************************************
\usepackage[BoldFont,SlantFont,CJKnumber,fallback]{xeCJK}
\usepackage{soul, color}
\setmainfont{Ubuntu}
\setromanfont{Liberation Sans}
\setmonofont{Liberation Mono}
%\chapterstyle{section}
\chapterstyle{demo}
%% list Chinese fonts: "fc-list :lang=zh"
%\setCJKmainfont{WenQuanYi Zen Hei}
%\setCJKmainfont{AR PL UMing TW}
%\setCJKsansfont{AR PL UKai TW}
%\setCJKmainfont{PMingLiU}
\setCJKmainfont{AR PL UKai TW}
%\setCJKmainfont{AR PL KaitiM Big5}
\setlength{\textheight}{8.5in} %A4
\setlength{\textwidth}{5.8in} %A4
%\setlength{\textheight}{5.75in} %A5
%\setlength{\textwidth}{4.2in} %A5
\CJKsetecglue{\hspace{2mm}}
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt
\newcommand{\notarrow}{$\centernot\Longrightarrow$}
\mdfdefinestyle{textbox01}{%
rightline=true,innerleftmargin=10,innerrightmargin=10,
frametitlerule=true,linecolor=blue, linewidth=3pt, frametitlerulecolor=blue,
frametitlebackgroundcolor=white,
frametitlerulewidth=3pt}
%****************************************
%****************************************
%***********************************************
\begin{document}
%***********************************************
\author{林微微}
\title{2015-6進修班}
\date{2013年9月30日}
\maketitle
%**********************************************
為 % ok -- properly compiled
爲 % NOT ok -- render a in the pdf
%**********************************************
\end{document}
答案1
该角色爲
不在 AR PL UKai TW 中,并且确实xeCJK
就此发出了警告:
*************************************************
* xeCJK warning: "missing-glyph"
*
* CJKfamily `\CJKrmdefault' (AR PL UKai TW) does not contain glyph `爲'
* (U+7232).
*
*************************************************
如果您想自动用 替换缺失的字符為
,您可以使用newunicodechar
:
\documentclass[a4paper, 11pt]{memoir}
\usepackage[BoldFont,SlantFont,CJKnumber,fallback]{xeCJK}
\usepackage{newunicodechar}
\setCJKmainfont{AR PL UKai TW}
\CJKsetecglue{\hspace{2mm}}
\newunicodechar{爲}{為}
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt
\begin{document}
為 % ok -- properly compiled
爲 % ok -- renders 為 in the pdf
\end{document}