![如何使用 \detokenize 命令获取字符串 é?](https://linux22.com/image/338696/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20%5Cdetokenize%20%E5%91%BD%E4%BB%A4%E8%8E%B7%E5%8F%96%E5%AD%97%E7%AC%A6%E4%B8%B2%20%C3%A9%EF%BC%9F.png)
我无法使用“\include”处理名称中包含字符串“é”的文件,例如“réserve”。因此我尝试了以下操作,但没有成功
\include{\detokenize{保留}}
经过几次尝试,我注意到命令
\detokenize{é}
用“Ãľ”代替“é”。
因此问题是“如何使用 \detokenize 命令获取字符串“é””。
这是一个最小的例子
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
\detokenize{é}
\end{document}
答案1
最好使用不带特殊字符的文件名。如果你喜欢冒险,你可以修补一些内核宏:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\include}
{\@include#1}
{\expandafter\@include\detokenize{#1}}
{}{}
\patchcmd{\@include}
{\string\@input{#1.aux}}
{\string\@input{\string\detokenize{\detokenize{#1}}.aux}}
{}{}
\makeatother
\begin{document}
\include{réservé}
\end{document}
答案2
对于像我一样来自的更多访客google:// detokenize unicode
。
\detokenize
不是 UTF8 友好的,但有时你可以用以下命令替换它:
\newcommand{\utffriendlydetokenize}[1]{%
\scantokens{%
\catcode`\_=12%
\catcode`\^=12%
\catcode`\{=12%
\catcode`\}=12%
\catcode`\&=12%
\catcode`\$=12%
\catcode`\#=12%
\catcode`\~=12%
\catcode`\\=12%
#1%
}%
}
(来源:https://gitlab.com/Nickkolok/biblatex2bibitem/-/blob/master/biblatex2bibitem.sty)
但是,它不适用于\include
。