xecjk:编译少量中文字符时出现问题。例如:為符合要求,但爲在 pdf 中会给我一个 。有什么建议吗?

xecjk:编译少量中文字符时出现问题。例如:為符合要求,但爲在 pdf 中会给我一个 。有什么建议吗?

我在 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}

在此处输入图片描述

相关内容