有没有办法让 fancyhdr 与 pagestyle fancy 兼容中文?

有没有办法让 fancyhdr 与 pagestyle fancy 兼容中文?

我成功地使用 编译了包含中文字符的文档CJKutf8。然而,它使我所有使用fancyhdrpagestyle的文件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}

相关内容