我成功地使用 编译了包含中文字符的文档CJKutf8
。然而,它使我所有使用fancyhdr
pagestyle的文件fanc
在编译过程中抛出与编码相关的错误。
要重现的最小示例(假设系统上安装了 cjk 支持并正在运行):
\documentclass{article}
\usepackage{CJKutf8}
\usepackage{fancyhdr}
%\pagestyle{fancy} % <---- uncomment to throw error in compile
\begin{document}
\begin{CJK*}{UTF8}{gbsn}
\section{前言}
\section{关于数学部分}
数学、中英文皆可以混排。You can intersperse math, Chinese and English (Latin script) without adding extra environments.
\end{CJK*}
\bigskip %% Just some white space
You can also insert Latin text in your document
\bigskip %% Just some white space
\begin{CJK*}{UTF8}{bsmi}
這是繁體中文。
\end{CJK*}
\end{document}
示例取自这里并延伸。
取消注释\pagestyle{fancy}
会产生以下错误:
! PACKAGE INPUTENC ERROR: UNICODE CHAR Ņ� (U+5173)
(INPUTENC) NOT SET UP FOR USE WITH LATEX.
SEE THE INPUTENC PACKAGE DOCUMENTATION FOR EXPLANATION.
Type H <return> for immediate help.
现在我不想使用 xetex 或 luatax 作为解决方法,而且我在我的文档中创建了一些相当复杂的标题,我想保留它们。
所以我的问题是,是否有办法解决这个错误,例如通过添加特定的包或fancyhdr
正确配置。
答案1
如今,对于非拉丁文脚本,可能建议使用 luatex 或 xelatex,但您可以重新声明 CJK 处理,以便它在标题范围内。更简单的方法是将其隐藏在宏中,这样就不会出现扩展和大写问题。
\documentclass{article}
\usepackage{CJKutf8}
\usepackage{fancyhdr}
\pagestyle{fancy} % <---- uncomment to throw error in compile
\protected\def\zzzA{\begin{CJK*}{UTF8}{gbsn}前言\end{CJK*}}
\protected\def\zzzB{\begin{CJK*}{UTF8}{gbsn}关于数学部分\end{CJK*}}
\begin{document}
\begin{CJK*}{UTF8}{gbsn}
\section{\zzzA}
\section{\zzzB}
数学、中英文皆可以混排。You can intersperse math, Chinese and English (Latin script) without adding extra environments.
\end{CJK*}
\bigskip %% Just some white space
You can also insert Latin text in your document
\bigskip %% Just some white space
\begin{CJK*}{UTF8}{bsmi}
這是繁體中文。
\end{CJK*}
\end{document}
答案2
CJK*
如果您可以自由使用 LuaLaTeX 或 XeLaTeX,并且拥有合适的系统字体(即具有必要中文字符的字体),则无需在“普通”环境之间切换。
以下示例在我的 MacOS 系统、MacTeX2018、fontspec
包和 SimSun 系统字体上的 LuaLaTeX 和 XeLaTeX 下都可以同样好地编译。
\documentclass{article}
\usepackage{fontspec} % for "\setmainfont" macro
\setmainfont{SimSun} % or some other suitable font
%\usepackage{CJKutf8} % not needed
\usepackage{fancyhdr}
\pagestyle{fancy}
\setlength\parindent{0pt} % just for this example
\begin{document}
%\begin{CJK*}{UTF8}{gbsn} % not needed
\section{前言}
\section{关于数学部分}
数学、中英文皆可以混排。You can intersperse math, Chinese and English
(Latin script) without adding extra environments.
%\end{CJK*} % not needed
\bigskip %% Just some white space
You can also insert Latin text in your document
\bigskip %% Just some white space
%\begin{CJK*}{UTF8}{bsmi} % not needed
這是繁體中文。
%\end{CJK*} % not needed
\end{document}