Я успешно могу компилировать китайские иероглифы в моих документах, используя 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*
«обычными» средами.
Следующий пример одинаково хорошо компилируется как в LuaLaTeX, так и в XeLaTeX на моей системе MacOS, MacTeX2018, пакете fontspec
и системном шрифте SimSun.
\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}