为了方便起见,我尝试定义一些“define”的快捷键,例如
\usepackage{mathtools}
\NewCommandCopy{\tmp}{\=}
\AtBeginDocument{%
\DeclareRobustCommand{\=}{\ =\ }%
}
\def\:={\ \coloneqq\ }
\def\=:{\ \eqqcolon\ }
然而,这并没有给出令人满意的结果:
\usepackage{amsmath}
\begin{align*}
f_Z(z) &\:= \int_{\mathbb{R}} f_{XY}(x,z-x)dx \\
&\= \int_{\mathbb{R}} f_X(x)f_Y(z-x)dx \\
&\=: (f_X * f_Y)(z),
\end{align*}
有什么巧妙的方法来解决这个问题吗?
如果您能告诉我一些技巧或技术,我将不胜感激。
谢谢,
答案1
你是想搬起石头砸自己的脚,然后取得成功。
\=
如果您的文档想要使用原来的含义(长音符号),那么以这种方式重新定义会给您带来问题。
第二:您\def\=:
没有定义控制序列\=:
(这是不可能的),而是在控制序列之后重新定义\=
为 require 。但是,这会被您在 begin document 处执行的:
相同重新定义所覆盖。\=
你可以使用:=
,=:
如果你有很多这样的符号1
关于额外的间距,抱歉,但我无法帮助获得糟糕的输出。2
\documentclass{article}
\usepackage{mathtools,amssymb}
\renewcommand{\vcentcolon}{\mathrel{\mathop\standardcolon}}
\ExplSyntaxOn
\cs_new_protected:Nn \seung_equals:
{
\peek_charcode_remove:NTF : { \eqqcolon } { \standardequal }
}
\cs_new_protected:Nn \seung_colon:
{
\peek_charcode_remove:NTF = { \coloneqq } { \standardcolon }
}
\AtBeginDocument
{
\mathchardef\standardequal=\mathcode`=
\mathchardef\standardcolon=\mathcode`:
\char_set_active_eq:NN = \seung_equals:
\char_set_active_eq:NN : \seung_colon:
\mathcode`=="8000\scan_stop:
\mathcode`:="8000\scan_stop:
}
\ExplSyntaxOff
\begin{document}
\begin{align*}
f_Z(z) &:= \int_{\mathbb{R}} f_{XY}(x,z-x)\,dx \\
&= \int_{\mathbb{R}} f_X(x)f_Y(z-x)\,dx \\
&=: (f_X * f_Y)(z),
\end{align*}
\end{document}
脚注
- 我从来不明白为什么需要 ≔ 或 ≕。
- 中关系符号周围的间距
eqnarray
被广泛认为是印刷错误。比较并决定。