我想定义
$$$ \zeta(s) = \dfrac1{1^s} + \dfrac1{2^s} + \cdots $$$
作为简写
\begin{align}
\zeta(s) = \dfrac1{1^s} + \dfrac1{2^s} + \cdots
\end{align}`
我该如何做呢?
PS:我知道使用 newcommand 来定义类似的东西
\newcommand{\ba}[1]{\begin{align}#1 \end{align}}
答案1
你可以。但我强烈反对你使用以下代码来实现你的想法。生成的文档代码晦涩难懂且容易出错。如果你忘记了某个$
地方,那么在 TeX 运行时你可能会收到奇怪的错误消息非常距离缺失点还很远$
。
免责声明。使用此代码可能会导致小猫死亡;还可能导致计算机反抗您并建立计算机统治世界。您已被告知。
\documentclass{article}
\usepackage{amsmath,array}
\let\normaldollar=$
\catcode`$=\active
\makeatletter
\protected\def${\new@ifnextchar${\check@two}{\(\close@single}}
\def\close@single#1${#1\)}
\def\check@two#1{\@ifstar{\do@equation@star}{\check@three}}
\def\check@three{\new@ifnextchar${\check@three@star}{\do@equation}}
\def\check@three@star#1{\@ifstar{\do@align@star}{\do@align}}
\def\do@equation@star#1$${\[#1\]}
\def\do@equation#1$${\begin{equation}#1\end{equation}}
\def\do@align#1$$${\begin{align}#1\end{align}}
\def\do@align@star#1$$${\begin{align*}#1\end{align*}}
\makeatother
\begin{document}
In line math $abc$, followed by a numbered equation
$$
1+1=\left\lbrace\begin{array}{@{}l>{\normaldollar}l<{\normaldollar}@{}}
2 & if it rains\\
3 & otherwise
\end{array}\right.
$$
followed by an unnumbered equation
$$*
2+2=4
$$
followed by a numbered align
$$$
a&=b\\
c&=d
$$$
followed by an unnumbered align
$$$*
f&=g\\
&=h
$$$
\end{document}
例如,忘记了$
后面的abc
,你会在第 34 行收到错误,内容如下
! Misplaced alignment tab character &.
尝试一下。然后忘掉这个想法。使用\newcommand{\ba}[1]{\begin{align}#1\end{align}}
会更糟糕。
答案2
你不应该。你实际上不应该$$...$$
在 LaTeX 中使用以下任一方法:为什么\[ … \]
优于$$
?
这也许是可行的,但要做到这一点会非常困难,因为它不会破坏这两件事(\usepackage{array}
第二个是必需的):
$$$ x_n = 0 \quad\text{for $n=1,2,3,\dotsm$} $$$
\begin{tabular}{>$l<$} 3x^2 \\ $Hello, World!$ \end{tabular}
请,请,编写清晰易读的代码,不要使用像提议的$$$...$$$
或(甚至更糟)的神秘简写\ba{...}
。
作为乔达诺指出,如果你想更快地输入代码,那么就问一个如何更快地输入代码的问题,而不是如何缩短代码。为了更快地输入代码,你可以找到一些支持各种自动完成功能的优秀编辑器:LaTeX 编辑器/IDE
答案3
如果我们使用纯 TeX,那么我们的生活就更简单了。我们输入:
$$\eqalign{
a &= b + c \cr
c &= d + e
}$$
当我们需要排版对齐方程时。你的想法$$$ ... $$$
可以通过以下方式简单实现\everydisplay
:
\everydisplay={\futurelet\next\eqalignQ}
\def\eqalignQ{\ifx\next$\expandafter\eqalignX\fi}
\def\eqalignX$#1$$${\eqalign{#1}$$}
$$$
a &= b + c \cr
c &= d + e
$$$
\end
而我们队伍里也没有 LaTeX 句法纯粹主义者。
答案4
\documentclass{scrartcl}
\usepackage{fixltx2e}
\usepackage{mathtools}
\makeatletter
\catcode`\$=\active
\protected\def${\new@ifnextchar$\adhvaitha@checkthird\adhvaitha@math}
\protected\def\adhvaitha@checkthird${\new@ifnextchar$\adhvaitha@align\adhvaitha@dmath}
\protected\def\adhvaitha@math#1${\(#1\)}
\protected\def\adhvaitha@dmath#1$${\[#1\]}
\protected\def\adhvaitha@align$#1$$${\begin{align}#1\end{align}}
\makeatother
\begin{document}
Some math $x^2$
and a little more
$$ x^2 $$$x^2$$24$
\begin{figure}[h]
\rule{2cm}{2cm}
\caption{$x^2 +1$}
\end{figure}
$$$ \text{aligned} &= M \cdot A \cdot T \cdot H $$$
\end{document}
添加:与 egreg 的回答相同的免责声明也适用于此处。