用命令替换符号的环境(或类似环境)

用命令替换符号的环境(或类似环境)

有关如何用 \cdot 替换 * 的示例。

我想做同样的事情,但只在一个环境中。例如:

\newenvironment{starmultiply}
{
% Something here...
}
{
% Undo previous effect
}

另一个很好的用法是用\langleand替换 < 和 > \rangle

我并不总是想在整个文档中这样做,因此DeclareMathSymbol不能使用(它只是序言)。另外,

\newenvironment{starmultiply}
{
\mathcode`\*="8000 %
{\catcode`\*=\active\gdef*{\cdot}}
}
{
% Undo previous effect
}

似乎不起作用。我收到“未定义控制序列”错误。有没有不太糟糕的解决方案?

答案1

您可以简单地更改 的数学代码*\gdef*不建议这样做,而且无论如何也不会起作用;有更好的方法可以在本地进行定义。请参阅下面的扩展代码。

\documentclass{article}
\usepackage{amsmath}

\newenvironment{starmultiply}
 {\mathcode`*=\cdot\ignorespaces}
 {\ignorespacesafterend}

\begin{document}

This is a standard multiplication $a\cdot b$

\begin{starmultiply}
This is a nonstandard multiplication $a*b$
\end{starmultiply}

\end{document}

在此处输入图片描述

对于\langle它来说\rangle,它有点复杂:

\documentclass{article}
\usepackage{amsmath}

\newenvironment{starmultiply}
 {%
  \mathcode`*=\cdot
  \mathcode`<="8000
  \mathcode`>="8000
  \begingroup\lccode`~=`< \lowercase{\endgroup\let~}\langle
  \begingroup\lccode`~=`> \lowercase{\endgroup\let~}\rangle
  \ignorespaces}
 {\ignorespacesafterend}

\begin{document}

This is a standard multiplication $\langle a\cdot b\rangle$

\begin{starmultiply}
This is a nonstandard multiplication $<a*b>$
\end{starmultiply}

\end{document}

在此处输入图片描述

相关内容