我正在将 unicode-math 包与 xelatex 结合使用。借助此包,我可以在 tex 代码中写入 unicode 符号。但是,有些 unicode 符号的编译方式与我预期的不一样。例如,我希望如果键入,$√{2+3}$
这将以与相同的方式进行编译$\sqrt{2+3}$
。但我得到了以下输出:
这里发生了什么事?我该如何解决这个问题?
编辑:我现在明白我可以使用以下方法修复此问题:
\usepackage{unicode-math,newunicodechar}
\newunicodechar{√}{\sqrt}
现在我想知道如何定义类似的东西:
\unicodedef█#1{\begin{equation}#1\end{equation}}
答案1
作为主动角色:
\documentclass{scrartcl}
\usepackage{unicode-math}
\setmathfont{XITS Math}
\begin{document}
$√2+3$
\catcode`\√=13 \let√\sqrt
$√{2+3}$
\end{document}
答案2
正如您已经发现的那样,默认情况下,√
它只是打印为一个普通符号,而不是数学对象。因此您必须定义它
\documentclass{article}
\usepackage{unicode-math}
\usepackage{newunicodechar}
\newunicodechar{√}{\sqrt}
现在您想将参数放在equation
环境之间。为此,您需要定义一个辅助宏来为您执行此操作:
\newcommand\myeq[1]{\begin{equation}#1\end{equation}}
\newunicodechar{█}{\myeq}
但还有更多选择。您也可以\active
手动创建角色并将其用作命令名称
\catcode`▒=\active
\newcommand▒[1]{\begin{equation}#1\end{equation}}
或者你可以用另一个字符标记等式的结尾
\catcode`▙=\active
\long\def▙#1▜{\begin{equation}#1\end{equation}}
要做到这一点newunicodechar
你需要定义
\newunicodechar{▛}{\begin{equation}}
\newunicodechar{▟}{\end{equation}}
这可能存在问题,即当\begin{equation}
展开时,它只能看到\end{equation}
。▟
虽然在我的示例中它似乎有效:
\begin{document}
█{√{a^2 + b^2} = c}
▒{a + b ≥ c}
▙e^{iπ} + 1 = 0▜
▛f(z) = \frac{1}{2πi}∫_{∂B_ε(z)}{\frac{f(ζ)}{ζ-z}\;\mathrm{d}ζ}▟
\end{document}