如何在.dtx 文档中使用 CJK 环境?

如何在.dtx 文档中使用 CJK 环境?

这是我的a.dtx文件,无法编译:

% \GetFileInfo{a.dtx}
% \iffalse
%<*driver>
\ProvidesFile{a.dtx}
%</driver>
%<class>\NeedsTeXFormat{LaTeX2e}
%<class>\ProvidesClass{a}
%<*class>
[00.00.0000 0.0.0 a]
%</class>
%<*driver>
\documentclass{ltxdoc}
\usepackage{CJKutf8}
\begin{document}
\DocInput{a.dtx}
\end{document}
%</driver>
% \fi

% \StopEventually{}
% \begin{macro}{\foo}
%    \begin{macrocode}
\begin{CJK}{UTF8}{gbsn}
你好
\end{CJK}
%    \end{macrocode}
% \end{macro}
% \Finale

问题出在CJK环境中。但是,本文档编译:

\documentclass{ltxdoc}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{gbsn}
你好
\end{CJK}
\end{document}

答案1

您可以将示例简化为

\documentclass{article}
\usepackage{CJKutf8}
\begin{document}

\begin{verbatim}
\begin{CJK}{UTF8}{gbsn}
你好
\end{CJK}
\end{verbatim}
\end{document}

这给出了

! LaTeX Error: Unicode character 你 (U+4F60)
               not set up for use with LaTeX.

问题在于,它\usepackage{CJKutf8}是逐字读取并排版为文本,因此没有设置字符。

您不能简单地将 CJK 字符变为非特殊字符,例如%或在(或)\中处理,因为它们需要处于活动状态才能处理解码 UTF8。verbatimmacrocode

最简单的解决方案是使用 lualatex 或 xelatex 进行排版,因为中文字符可以像hello

如果 pdftex 是一项要求,那么某些事情就会成为可能......

例如这有效

\documentclass{article}
\usepackage{CJKutf8}
\begin{document}

\begin{CJK}{UTF8}{gbsn}
\begin{verbatim}
\begin{CJK}{UTF8}{gbsn}
你好
\end{CJK}
\end{verbatim}
\end{CJK}
\end{document}

相关内容