我希望能够以这样的方式使用 LuaLaTeX,即根据使用上下文将一个单词替换为另一个单词。
这是一个简单的例子:当我用斜体书写时,将单词“ and ”(在“a”之前和“d”之后有一个空格)替换为“ & ”。
但总是用“ ”代替“and”是不切实际的\and
。很容易忘记一个“ \
”,这会降低书写速度。
我不太熟悉 LuaLaTeX 提供的所有可能性(我最近才放弃 PDFLaTeX),但在我看来,LuaLaTeX 允许这样的单词替换,而并不总是使用“ \and
”命令。
你知道怎么做吗?
\documentclass{article}
\begin{document}
LuaLaTeX code to automatically convert “\textvisiblespace and\textvisiblespace” to “\textvisiblespace\&\textvisiblespace” if \texttt{\textbackslash textit} is used : \bigskip
\noindent salt and pepper\\
\textit{salt and pepper}\\
should produce :\\
salt and pepper\\
\textit{salt \& pepper}
\end{document}
答案1
\documentclass{article}
\usepackage{luacode}
\begin{luacode}
fonts.handlers.otf.addfeature {
name = "itand",
type = "chainsubstitution",
lookups = {
{
type = "ligature",
data = {
['&'] = { "a", "n", "d" },
},
},
},
data = {
rules = {
{
-- the space is redundant as 0xFFFC contains it
before = { { " ", 0xFFFC } },
after = { { " ", 0xFFFC } },
current = { { "a" }, { "n" }, {"d" } },
lookups = { 1 },
},
},
},
}
\end{luacode}
\usepackage{fontspec}
\setmainfont{texgyretermes}[ItalicFeatures={RawFeature=+itand}]
\begin{document}
abc and cde bande band and ande
\itshape abc and cde bande band and ande
\end{document}