![对齐与分隔符相结合的文本](https://linux22.com/image/340112/%E5%AF%B9%E9%BD%90%E4%B8%8E%E5%88%86%E9%9A%94%E7%AC%A6%E7%9B%B8%E7%BB%93%E5%90%88%E7%9A%84%E6%96%87%E6%9C%AC.png)
我想要在数学模式下对齐文本。
\documentclass{article}
\usepackage{amsmath}
\usepackage{mathtools}
\begin{document}
\begin{align*}
A \coloneqq \left\lbrace B \mid \text{very long text, which is to long for} \right. \\
\left. \text{one line} \right\rbrace
\end{align*}
%\begin{align*}
%A \coloneqq \left\lbrace B \mid &\text{very long text, which is to long for} \right. \\
%\left. &\text{one line} \right\rbrace
%\end{align*}
\end{document}
我怎样才能让“一”放在“非常”之下?
答案1
这里有几种可能性;重新设置\textwidth
只是为了防止最后一个例子“分崩离析”(为此,您需要更长的文本)。
请注意,mathtools
加载amsmath
,因此不需要明确加载。
还要注意,分别输入几个不同的显示是非常糟糕的形式;这里这样做只是为了教学原因。
\documentclass{article}
\usepackage{mathtools}
\textwidth=3.5in
\begin{document}
\begin{align*}
A \coloneqq \left\lbrace B \right. &\mid \text{very long text, which is to long for} \\
& \phantom{\mid{}} \left. \text{one line} \right\rbrace
\end{align*}
\begin{equation*}
A \coloneqq \lbrace B \mid
\begin{minipage}[t]{.6\textwidth}
very long text, which is to long for\\
one line$\rbrace$
\end{minipage}
\end{equation*}
\begin{multline*}
A \coloneqq \left\lbrace B \mid \text{very long text, which is to long for} \right. \\
\left. \text{one line} \right\rbrace
\end{multline*}
\end{document}
答案2
这是不用完全采用的一种方法align*
。
\documentclass{article}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{stackengine}
\stackMath
\begin{document}
\begin{equation*}
\renewcommand\stackalignment{l}
\renewcommand\stacktype{L}
\setstackgap{L}{1.2\baselineskip}
A \coloneqq \bigl\{ B \mid \stackunder{\text{very long text, which is to long for}}
{\text{one line} \bigr\}}
\end{equation*}
\end{document}
答案3
parbox
我会欺骗 LaTeX,用一些或来在一行上完成它tabular
。我还会set builder notation
使用 工具为 定义一个命令,使用可变大小的分隔符mathtools
。以下是两种方法:
\documentclass{article}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{xparse, eqparbox, stackengine}
\setstackEOL{\\}
\setstackgap{0pt}
\DeclarePairedDelimiterX{\set}[1]\{\}{\setargs{#1}}
\NewDocumentCommand{\setargs}{>{\SplitArgument{1}{;}}m}
{\setargsaux#1}
\NewDocumentCommand{\setargsaux}{mm}
{\IfNoValueTF{#2}{#1}{\nonscript\,#1\nonscript\;\delimsize\vert\nonscript\:\allowbreak #2\nonscript\,}}
\begin{document}
\begin{align*}
A \coloneqq \left\lbrace B \mid \text{very long text, which is too long for} \right. \\
\left. \text{one line} \right\rbrace
\end{align*}
\renewcommand\Lstackgap{2.25ex}
\begin{align*}
A & \coloneqq \set*{ B ; \eqparbox{TB}{very long text, which is too long \\[-0.5ex]for one line}}\\[2ex]
A & \coloneqq \set[\Big]{ B ; \Centerstack[l]{very long text, which is too long \\for one line}}
\end{align*}
\end{document}
答案4
感谢芭芭拉 (Barbara)、伯纳德 (Bernard) 和史蒂文 (Steven)。
我尝试从所有解决方案中找出最好的一个:(您对此有何看法?)
\documentclass{article}
\usepackage{mathtools}
\newcommand{\set}[3]{\left\lbrace #2 \left\vert \: \minipage{#1}{#3}\endminipage \right. \right\rbrace}
\begin{document}
\[ A \coloneqq \set{0.5\textwidth}{B}{very long text, which is too long for one line} \]
\end{document}
输出: