对齐与分隔符相结合的文本

对齐与分隔符相结合的文本

我想要在数学模式下对齐文本。

\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}

输出:

在此处输入图片描述

相关内容