6 为什么我不能使用缩写\begin{align} . . . \end{align}?

6 为什么我不能使用缩写\begin{align} . . . \end{align}?

\newcommand我使用以下示例创建了一些新的短命令:

\documentclass[12pt,twoside,a4paper]{book}      
\usepackage{enumerate,amsmath}  

\newcommand{\ba}{\begin{array}}     
\newcommand{\ea}{\end{array}}  

\newcommand{\ben}{\begin{enumerate}}      
\newcommand{\een}{\end{enumerate}}  

\newcommand{\bal}{\begin{align}}      
\newcommand{\eal}{\end{align}}  

\newcommand{\bc}{\begin{center}}     
\newcommand{\ec}{\end{center}}  

\newcommand{\de}{^\circ}  

\begin{document}     

\bc      
$5\de$      
\ec  

\ben      
\item Text  
\item Text  
\een  


$\ba{cc}    
a & b\\   
c & d    
\ea$  


\bal      
& r\\      
& f      
\eal  


But   

\begin{align}     
& r\\      
& f     
\end{align}  

is working.     
\end{document}

除和外,所有\newcommands 都运行良好 。我不知道为什么它不起作用。\bal\eal

答案1

David 和 Ulrike 已经告诉你为什么它不适用于align。引用 Ulrike 提供的链接,“技术说明amsmath包装

6 为什么我不能使用缩写\begin{align} . . . \end{align}

... 尝试将\bal...定义\eal\begin{align}...的简写。\end{align}的简写将会失败,并出现令人费解的错误消息。这与不幸的非平凡技术复杂性有关:给定的环境必须将其内容读取为分隔的宏参数,因为它们使用从 Spivak 继承的算法对内容进行多遍处理amstex.tex。显而易见的解决方案是使用不同的算法,在多遍计算中执行框改组而不是标记改组,这将需要从头开始重写这些显示环境;虽然这是一个值得追求的目标,但它超出了 AmS-LaTeX 项目的原始范围。[强调补充]

就我个人而言,以下是我认为总体上这是一个坏主意的原因,尽管存在令人费解的错误。快告诉我这段代码应该产生什么。

\bc  

$5\de$  

\ec  

\ben  

\item Text  

\item Text  

\een  

如果这花费了您超过 10 秒的时间,那么您就是在浪费时间。现在想象一下将这样的代码发布到论坛上寻求帮助解决问题。其他试图阅读它的人很快就会困惑,不会再去阅读。

相比于:

\[
    5^\circ
\]

\begin{enumerate}
   \item Text
   \item Text
\end{enumerate}

更加可读且更加传统。

我认为,零参数、零逻辑的宏,除非它们添加了语法糖,否则代表了对错误事物的优化:按键,以可读性和可移植性为代价。如果你真的想少打字,请使用文本扩展软件,例如文本扩展器或者自动热键

相关内容