正如 Marcel Krüger 在他的回答中所表明的那样
可以使用“组合上面的右箭头”作为命令\vec
。这极大地提高了源代码的可读性。我有一些包含大量向量的文档。
我复制了答案并尝试了一下。没问题。但我想在 Plain LuaTeX 中使用此解决方案,但尽管我没有修改代码,但字母根本没有重音。这里有什么问题?
梅威瑟:
% Plain LuaTeX
\input luaotfload.sty
\font\fourteenmath="latinmodern-math.otf:mode=base;script=math" at 14.4 pt
\textfont1=\fourteenmath
\Umathcode`x="7"1`x
\Umathcode`y="7"1`y
\protected\def\vec{\Umathaccent fixed"0"1"20D7 }
$$ \vec xy $$% Works.
\mathcode"20D7="8000
\def\aftervec{\directlua{
local nest = tex.nest[tex.nest.ptr]
local last = nest.tail
if not last or not last.id == 18 then
error'I can only put accents on simple noads.'
end
if last.sub or last.sup then
error'If you want accents on a superscript or subscript, please use braces.'
end
local acc = node.new(21, 1)
acc.nucleus = last.nucleus
last.nucleus = nil
acc.accent = node.new(23)
acc.accent.fam, acc.accent.char = 0, 0x20D7
print(last, nest.head)
nest.head = node.insert_after(node.remove(nest.head, last), nil, acc)
nest.tail = acc
node.flush_node(last)
}}
\letcharcode"20D7=\aftervec
$$ x⃗y $$ % x does not get accented.
\bye