有沒有辦法讓pagestyle fancy的fancyhdr相容中文?

有沒有辦法讓pagestyle fancy的fancyhdr相容中文?

我成功地可以使用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

如果您可以自由使用LuaLaTeX或XeLaTeX並且有合適的系統字體,即具有必需的漢字的字體,則可以省去在CJK*「普通」環境之間切換。

以下範例在我的 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}

相關內容