如何做到这一点,以便遵循乳胶
\documentclass{article}
\begin{document}
n
\end{document}
生成一个 PDF,其中字母n
被替换为m
?
从如何在渲染之前自动将一个字母替换为另一个字母我看到一个选择是
\catcode`\X=\active
\def X{Y}
但这不适用于信件n
\catcode`\n=\active
\def n{m}
答案1
使用 luatex 您可以为字体添加替换规则:
\documentclass{article}
\usepackage{fontspec}
\directlua
{
fonts.handlers.otf.addfeature
{
name = "mysubs",
type = "substitution",
data =
{
["n"] = {"m"},
},
}
}
\setmainfont{Latin Modern Roman}[RawFeature=+mysubs;]
\begin{document}
n m o p
\end{document}
使用 xelatex 时,与 TECkit 映射类似的事情是可能的(例如,这种映射用于映射--
到 endash)。
答案2
它仅在您限制 catcode 更改的范围时才有效,因为名称中带有“n”的任何宏(例如\end
)都会破坏代码。
\documentclass{article}
\newcommand\Nsubon{\catcode`\n=\active}
\newcommand\Nsuboff{\catcode`\n=11 }
{\Nsubon\gdef n{m}}
\begin{document}
\Nsubon jklmn
and when I am done...
\Nsuboff
{\Nsubon Alternately, scope the code in a group}
\end{document}