看这有关如何用 \cdot 替换 * 的示例。
我想做同样的事情,但只在一个环境中。例如:
\newenvironment{starmultiply}
{
% Something here...
}
{
% Undo previous effect
}
另一个很好的用法是用\langle
and替换 < 和 > \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}