定义 `$$$ $$$` 来对齐

定义 `$$$ $$$` 来对齐

我想定义

$$$ \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 的回答相同的免责声明也适用于此处。

相关内容