![数学模式中的多重对齐不需要太多空间](https://linux22.com/image/380978/%E6%95%B0%E5%AD%A6%E6%A8%A1%E5%BC%8F%E4%B8%AD%E7%9A%84%E5%A4%9A%E9%87%8D%E5%AF%B9%E9%BD%90%E4%B8%8D%E9%9C%80%E8%A6%81%E5%A4%AA%E5%A4%9A%E7%A9%BA%E9%97%B4.png)
有几篇关于多重比对的帖子,但我找不到解决我的问题的方法。
%%%%% Dokumentenklasse mit verschiedenen Attributen
\documentclass[a4paper, abstracton, bibtotocnumbered,liststotoc,12pt]{scrartcl}
%%%%% Betriebssystemabhängige Eingabedekodierung
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc} %% für Windows
\usepackage[ngerman]{babel}
\usepackage{amsthm}
\usepackage{mathtools}
\newcommand{\matr}[1]{\mathbf{#1}}
\newcommand{\X}{\matr{X}} %Matrix von X
\newcommand{\y}{\matr{y}} %y als voller Vektor
\newcommand{\Xt}{\X^\mathbf{T}} %Matrix von X
\newcommand{\x}{\matr{x}}%Regressor von X
\newcommand{\xt}{\x^\mathbf{T}}%Regressor von X
\newcommand{\betahat}{\hat{\beta}} %betahat
\begin{document}
\begin{flalign*}
\Xt\y-\Xt\X\betahat &= \lambda s\\
\Leftrightarrow \underbrace{\Xt \y}_{p \times 1} &= \underbrace{\vphantom{ \Xt \y } \lambda s}_{p \times 1}, \quad s \in [-1,1]^{p} \\
\intertext{\textnormal{Das $j$-te Element entspricht}}
\xt_{j}\y &= \lambda s_j, \quad \quad s_j \in [-1,1] \Leftrightarrow \lambda s_j \in [-\lambda, \lambda] \\
\Leftrightarrow |\xt_{j}\y| &\leq \lambda, \quad \forall j \in \{1,...,p\}
\end{flalign*}
\end{document}
我正在使用以下代码,我想对逗号和后面的语句进行多重对齐\quad
。我尝试使用 对其进行多重对齐,&&
但方程式和其他参数之间的空间太大。我大致想要与 quad 产生的空间相同,但参数对齐。
答案1
对于多个对齐点,您可以使用alignat
:
\documentclass[a4paper, abstracton, bibtotocnumbered,liststotoc,12pt]{scrartcl}
%%%%% Betriebssystemabhängige Eingabedekodierung
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc} %% für Windows
\usepackage[ngerman]{babel}
\usepackage{amsthm}
\usepackage{mathtools}
\newcommand{\matr}[1]{\mathbf{#1}}
\newcommand{\X}{\matr{X}} %Matrix von X
\newcommand{\y}{\matr{y}} %y als voller Vektor
\newcommand{\Xt}{\X^\mathbf{T}} %Matrix von X
\newcommand{\x}{\matr{x}}%Regressor von X
\newcommand{\xt}{\x^\mathbf{T}}%Regressor von X
\newcommand{\betahat}{\hat{\beta}} %betahat
\begin{document}
\begin{alignat*}{2}
\Xt\y-\Xt\X\betahat & = \lambda s\\
\Leftrightarrow \underbrace{\Xt \y}_{p \times 1} & = \underbrace{\vphantom{ \Xt \y } \lambda s}_{p \times 1}, & \quad & s \in [-1,1]^{p} \\
\intertext{\textnormal{Das $j$-te Element entspricht}}
\xt_{j}\y &= \lambda s_j, & \quad & s_j \in [-1,1] \Leftrightarrow \lambda s_j \in [-\lambda, \lambda] \\
\Leftrightarrow |\xt_{j}\y| &\leq \lambda, & \quad & \forall j \in \{1,\dots,p\}
\end{alignat*}
\end{document}
答案2
环境flalign
名称的含义全长对齐,表示当对齐点超过一个时,将使用整个线宽。
为了控制对齐,您可以使用alignat
,或者align
如果您不想打扰的话。
%%%%% Dokumentenklasse mit verschiedenen Attributen
\documentclass[a4paper, abstracton,12pt]{scrartcl}
%%%%% Betriebssystemabhängige Eingabedekodierung
\usepackage[T1]{fontenc}
%\usepackage[latin1]{inputenc} %% für Windows
\usepackage[ngerman]{babel}
\usepackage{amsthm}
\usepackage{mathtools}
\newcommand{\matr}[1]{\mathbf{#1}}
\newcommand{\X}{\matr{X}} %Matrix von X
\newcommand{\y}{\matr{y}} %y als voller Vektor
\newcommand{\Xt}{\X^\mathbf{T}} %Matrix von X
\newcommand{\x}{\matr{x}}%Regressor von X
\newcommand{\xt}{\x^\mathbf{T}}%Regressor von X
\newcommand{\betahat}{\hat{\beta}} %betahat
\begin{document}
\section{\texttt{alignat}}
\begin{alignat*}{2}
\Xt\y-\Xt\X\betahat
&= \lambda s\\
\Leftrightarrow {\underbrace{\Xt \y}_{p \times 1}}
&= {\underbrace{\vphantom{ \Xt \y } \lambda s}_{p \times 1}},
&\quad& s \in [-1,1]^{p} \\
\intertext{Das $j$-te Element entspricht}
\xt_{j}\y
&= \lambda s_j,
&\quad& s_j \in [-1,1] \Leftrightarrow \lambda s_j \in [-\lambda, \lambda] \\
\Leftrightarrow |\xt_{j}\y|
&\leq \lambda,
&\quad& \forall j \in \{1,\dots,p\}
\end{alignat*}
\section{\texttt{align}}
\begin{align*}
\Xt\y-\Xt\X\betahat
&= \lambda s\\
\Leftrightarrow {\underbrace{\Xt \y}_{p \times 1}}
&= {\underbrace{\vphantom{ \Xt \y } \lambda s}_{p \times 1}},
&& s \in [-1,1]^{p} \\
\intertext{Das $j$-te Element entspricht}
\xt_{j}\y
&= \lambda s_j,
&& s_j \in [-1,1] \Leftrightarrow \lambda s_j \in [-\lambda, \lambda] \\
\Leftrightarrow |\xt_{j}\y|
&\leq \lambda,
&& \forall j \in \{1,\dots,p\}
\end{align*}
\end{document}
需要注意几点。
latin1
是不是“适用于 Windows”。如果文件采用 Latin-1 编码,请使用它,但您应尽快切换到 UTF-8。- 选项
bibtotocnumbered
和liststotoc
已被弃用。 \underbrace{<code>}_{<code>}
应支撑以保持正确的间距,因此{\underbrace{<code>}_{<code>}}
。- 切勿
...
在输入中使用,但\dots
如果需要,可以使用 或 中的一个\dotsc
(\dotsb
请\dotsm
参阅\dots* 的区别)。
答案3
你需要alignat*
:
\documentclass[a4paper, abstracton, bibtotocnumbered,liststotoc,12pt]{scrartcl}
%%%%% Betriebssystemabhängige Eingabedekodierung
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc} %% für Windows
\usepackage[ngerman]{babel}
\usepackage{amsthm}
\usepackage{mathtools}
\newcommand{\matr}[1]{\mathbf{#1}}
\newcommand{\X}{\matr{X}} %Matrix von X
\newcommand{\y}{\matr{y}} %y als voller Vektor
\newcommand{\Xt}{\X^\mathbf{T}} %Matrix von X
\newcommand{\x}{\matr{x}}%Regressor von X
\newcommand{\xt}{\x^\mathbf{T}}%Regressor von X
\newcommand{\betahat}{\hat{\beta}} %betahat
\begin{document}
\begin{alignat*}{2}
\Xt\y-\Xt\X\betahat &= \lambda s && \\
\Leftrightarrow \underbrace{\Xt \y}_{p \times 1} &= \underbrace{\vphantom{\Xt\y}\lambda s}_{p\times1}, &&\quad s \in [-1,1]^{p} \\
\intertext{\textnormal{Das $j$-te Element entspricht}}
\xt_{j}\y &= \lambda s_j, &&\quad s_j \in [-1,1] \Leftrightarrow \lambda s_j \in [-\lambda, \lambda] \\
\Leftrightarrow |\xt_{j}\y| &\leq \lambda, &&\quad \forall j \in \{1,...,p\}
\end{alignat*}
\end{document}
答案4
一些布局改进(至少对我来说是这样):我 优先 使用\underbracket
from而不是 ,但对于小公式来说,它看起来不太好看。另外,我使用了(再次使用 mathtools)——这会在 中添加另一列。最后,我不明白为什么转置符号应该用粗体显示,所以我使用了。mathtools
\underbrace
\ArrowBetweenLines
alignat
\mathrm
\documentclass[a4paper, abstracton, bibtotocnumbered,liststotoc,12pt]{scrartcl}
%%%%% Betriebssystemabhängige Eingabedekodierung
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc} %% für Windows
\usepackage[ngerman]{babel}
\usepackage{mathtools}
\newcommand{\matr}[1]{\mathbf{#1}}
\newcommand{\X}{\matr{X}} %Matrix von X
\newcommand{\y}{\matr{y}} %y als voller Vektor
\newcommand{\Xt}{\X^\mathrm{T}} %Matrix von X
\newcommand{\x}{\matr{x}}%Regressor von X
\newcommand{\xt}{\x^\mathrm{T}}%Regressor von X
\newcommand{\betahat}{\hat{\beta}} %betahat
\begin{document}
\begin{alignat*}{3}
& & \Xt\y-\Xt\X\betahat & = \lambda s\\
\ArrowBetweenLines
& & \underbracket[0.4pt]{\Xt \y}_{p \times 1} & = \mkern-2mu\underbracket[0.4pt]{\mkern2mu \vphantom{\y}\lambda s\mkern1mu}_{p \times 1}\mkern-1mu, & \quad & s \in [-1,1]^{p} \\
\intertext{\textnormal{Das $j$-te Element entspricht}}
& & \xt_{j}\y &= \lambda s_j, & \quad & s_j \in [-1,1] \Leftrightarrow \lambda s_j \in [-\lambda, \lambda] \\
\ArrowBetweenLines
& & |\xt_{j}\y| &\leq \lambda, & \quad & \forall j \in \{1,\dots,p\}
\end{alignat*}
\end{document}