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