当我用 编译此文件(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
打印所需的字符。