带有 utf-8/特殊字符的命令名称

带有 utf-8/特殊字符的命令名称

是否可以定义

\newcommand{\√}[1]{\sqrt{#1}}

因为像这样的命令有时会更容易使用。

答案1

如果宏没有参数,那么这只需要加载newunicodechar包或使用\DeclareUnicodeCharacter宏。要使“角色”接受参数,需要采用略有不同的方法。

如果你使用 XeTeX 或 LuaTeX,你可以使用以下任一方式

\catcode`\√=\active
\newcommand{√}[1]{\sqrt{#1}}
$√{2}$

或者

\newcommand{\√}[1]{\sqrt{#1}}
$\√{2}$

(第二种方法更为稳健。)

使用 pdfTeX 时,\√语法将无法工作,因为 pdfTeX 处理输入的方式(尽管理论上可以实现这一点)。这只剩下唯一的方法(取自newunicodechar文档并进行了修改):

\documentclass{article}

\usepackage[utf8]{inputenc}

\expandafter\newcommand\csname u8:\detokenize{√}\endcsname[1]{%
  \sqrt{#1}}

\begin{document}

$√{2}$

\end{document}

相关内容