使用带有 Unicode 输入的 DocStrip (.dtx)

使用带有 Unicode 输入的 DocStrip (.dtx)

当我用 编译此文件(test.dtx)时tex test.dtx && latexmk -pdflua test.tex,它不支持 UTF8 输入。

%<*driver>
\input docstrip.tex
\keepsilent
\askforoverwritefalse
\generate{\file{\jobname.tex}{\from{\jobname.dtx}{default}}}
\endbatchfile
%</driver>
%<*default>
\documentclass[a4paper, 12pt, twoside]{article}

\usepackage{fontspec}

\begin{document}
äëïöü
\end{document}
%</default>

截屏

DocStrip 生成的文件:

\documentclass[a4paper, 12pt, twoside]{article}

\usepackage{fontspec}

\begin{document}
^^c3^^a4^^c3^^ab^^c3^^af^^c3^^b6^^c3^^bc a
\end{document}
\endinput

当我尝试自己解决这个问题时,我遇到了这个 GitHub 问题:https://github.com/latex3/latex2e/issues/34

在那个问题中,据说\UseRawInputEncoding在文件顶部添加.ins可以解决这个问题。但是当我\UseRawInputEncoding在文件顶部添加(或者在新行test.dtx之后添加)时,我得到了一个错误(未定义的控制序列)。%<*driver>

任何帮助都将不胜感激。谢谢!

答案1

作为约瑟夫·赖特注意到,我的问题的实际解决方案是使用luatex而不是tex,即用

luatex test.dtx && latexmk -pdflua test.tex

打完电话后tex -help,看到有flag,,-8bit那就make all characters printable by default

编译test.dtx与上述相同的内容tex -8bit test.dtx && latexmk -pdflua test.tex现在可以按预期进行。

我仍然很好奇是否存在不需要命令标志的解决方案tex


变化的是,DocStrip 现在生成了此文档:

\documentclass[a4paper, 12pt, twoside]{article}

\usepackage{fontspec}

\begin{document}
äëïöü
\end{document}
\endinput

相关部分是文件现在包含äëïöü而不是^^c3^^a4^^c3^^ab^^c3^^af^^c3^^b6^^c3^^bc a。这样就可以fontspec打印所需的字符。

相关内容