这是我的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。verbatim
macrocode
最简单的解决方案是使用 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}