方括号表示“A 或 B 或 C”

方括号表示“A 或 B 或 C”

我怎样才能以这种形式写出$A.B.C=0$相当于$A=0$$B=0$或?$C=0$

我是 Latex 的新手。我想写一个如下表达式 在此处输入图片描述

我该怎么做?非常感谢!

答案1

这是一个允许对括号进行任意数量选择的解决方案:

在此处输入图片描述

此输出的调用是\orbrace[.5]{A=0,B=0,C=0,D=0}

该命令\orbrace接受 2 个参数,其中一个是可选的。可选参数.5是每个选项之间的间距(以厘米为单位)(默认值为 1)。必需的逗号分隔列表提供了要在数学模式下排版的选项。

以下是代码:

\documentclass{article}

\usepackage{tikz}


\newcommand{\orbrace}[2][1]{\begin{tikzpicture}[line cap=round, semithick, baseline={([yshift=-.88mm]current bounding box.center)}]
    \foreach[var=\x, count=\m] in {#2}{
    \ifnum \m>1 \draw(0,-\m*#1) -- ++(0,#1); \fi
    \draw (0,-\m*#1) -- ++(.1,0) node[right] {$\x$};
    }
    \end{tikzpicture}}

\begin{document}

\[
A.B.C.D=0 \Leftrightarrow \orbrace[.5]{A=0,B=0,C=0,D=0}
\]

\end{document}

答案2

第二次尝试。感谢 Steven B. Segelets 告诉我第一次尝试并不是作者想要的。

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
\[A\cdot B\cdot C=0\quad\Longleftrightarrow\quad\hspace{1ex}
\begin{aligned}
\tikzmarknode{A}{A}&=0\\ \tikzmarknode{B}{B}&=0\\ \tikzmarknode{C}{C}&=0
\end{aligned}
\begin{tikzpicture}[overlay,remember picture]
 \draw[semithick] ([xshift=-2pt]A.west) -- ++ (-1ex,0) |- ([xshift=-2pt]C.west)
  ([xshift=-2pt]A.west|-B) -- ++ (-1ex,0);
\end{tikzpicture}
\]
\end{document}

在此处输入图片描述

答案3

为了清晰起见,我决定把这个问题放在第二篇文章中。这是试图结合现有答案的优点,即Sandy G 的帖子以及我自己的基线对齐和等号。现在您可以添加一整套选项,但出于内部原因以及在 中使用它的能力,beamer您需要使用\&而不是&。而且,与普通aligned环境中的这种可选方式不同,您不能接受最后的\\。除此之外,您可以使用aligned语法。

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{matrix,tikzmark}
\tikzset{aligned/.cd,h/.initial=1ex,
    lines/.code={\tikzset{aligned/linestyle/.append style={#1}}},
    linestyle/.style={line cap=round,line join=round,semithick}}
\newcommand{\AlignedTikZ}[2][]{\begin{tikzpicture}[baseline={(tmpbase.base)},
    aligned/.cd,#1]
\matrix[matrix of math nodes,cells={nodes={inner xsep=.1111em}},
    column 1/.style={nodes={anchor=base east}},
    ampersand replacement=\&] (tmpmat) {#2};
\pgfmathtruncatemacro{\mybaserow}{(\pgfmatrixcurrentrow+1)/2}
\ifodd\pgfmatrixcurrentrow  
\path (tmpmat-\mybaserow-1.base) node[anchor=base] (tmpbase){};
\else
\path (tmpmat-\the\numexpr\mybaserow+1\relax-1.base) --
 node[anchor=base] (tmpbase){}
(tmpmat-\mybaserow-1.base);
\fi
\draw[aligned/linestyle] foreach \X in {1,...,\pgfmatrixcurrentrow}
{(tmpmat.west|-tmpmat-\X-1) -- ++ (-\pgfkeysvalueof{/tikz/aligned/h},0)}
([xshift=-\pgfkeysvalueof{/tikz/aligned/h}]tmpmat.west|-tmpmat-1-1) --
([xshift=-\pgfkeysvalueof{/tikz/aligned/h}]tmpmat.west|-tmpmat-\the\numexpr\pgfmatrixcurrentrow\relax-1);
\end{tikzpicture}}
\begin{document}
\[
A\cdot B\cdot C=0 \quad\Longleftrightarrow\quad 
\AlignedTikZ{A\&=0\\ B\&=0\\ C\&=0\\}
\]

\[
A\cdot B\cdot C=0 \quad\Longleftrightarrow\quad 
\AlignedTikZ[lines={thick,blue}]{A\&=0\\ B\&=0\\ C\&=0\\}
\]

\[
A\cdot B_1\cdot C_{12}=0 \quad\Longleftrightarrow\quad 
\AlignedTikZ{A\&=0\\ B_1\&=0\\ C_{12}\&=0\\}
\]

\[
A\cdot B_1\cdot C_{12}\cdot D=0 \quad\Longleftrightarrow\quad 
\AlignedTikZ{A\&=0\\ B_1\&=0\\ C_{12}\&=0\\ D\&=0\\}
\]

\end{document}

在此处输入图片描述

外观可以通过 pgf 键控制。如果您想更改水平条的长度,只需h=1em在选项中添加 即可。如果您想添加功能,也可以这样做,而不会失去向后兼容性。

相关内容