Есть ли способ сделать 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

Если вы можете свободно использовать 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}

Связанный контент