修改案例公式的括号

修改案例公式的括号

我想知道是否有办法将案例的符号(花括号)更改为指向上/左和下/左的两个箭头。

\documentclass[a4paper,11pt]{article}
\usepackage{kerkis}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{wasysym}
\usepackage{amsthm}
\usepackage{tikz}
\begin{document}
\begin{align}
\mathbf{\nabla}\times \mathbf{E}=&0\;\begin{cases}\mathbf{E}=-\mathbf{\nabla}\Phi \\     \hat{\eta}\times (\mathbf{E_2}-\mathbf{E_1})=0\mbox{(continiuty)}\end{cases}\\
1+1=&2
\end{align}
%TikZ code "illustrating" the new "brace"
\begin{tikzpicture}
\draw[->] (0,0) -- (1,1);
\draw[->] (0,0) -- (1,-1);
\end{tikzpicture}
\end{document}

答案1

首先这是一个多箭头版本:

示例输出

\documentclass[a4paper,11pt]{article}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{amsthm}
\usepackage{tikz}
\usetikzlibrary{calc}

\tikzset{arrowcases/.style={matrix anchor=west,%
  nodes={anchor=base west,%
         name=arrc-\the\pgfmatrixcurrentrow-\the\pgfmatrixcurrentcolumn},%
  execute at begin cell=\node\bgroup\math\displaystyle,%
  execute at end cell=\endmath\egroup;,%
  ampersand replacement=\&}}

\def\beginarrowcases#1\endarrowcases{
\begin{tikzpicture}[baseline=(O)]
  \matrix [arrowcases] {
  #1
  };
  \coordinate (A) at (arrc-1-1.west);
  \coordinate (B) at (arrc-\the\pgfmatrixcurrentrow-1.west);
  \coordinate (start) at ($(A)!0.5!(B) - (1em,0)$);
  \foreach \nn in {1,...,\pgfmatrixcurrentrow} {
    \draw[->] (start) -- (arrc-\nn-1.west);
  };
  \coordinate (O) at ($(start)-(0,0.5ex)$);
  \node at (-1em,0) {};
\end{tikzpicture}}

\begin{document}


\begin{align}
  \mathbf{\nabla}\times \mathbf{E}&=0
  \beginarrowcases
    \mathbf{E}=-\mathbf{\nabla}\Phi \\
    \hat{\eta}\times (\mathbf{E_2}-\mathbf{E_1})=0 \&
    \text{(continuity)} \\
    \mathbf{E}=-\mathbf{\nabla}\Phi \& \text{(again)}\\
  \endarrowcases \\
  1+1 &= 2
\end{align}

\end{document}

这是通过matrix of math nodes在 中创建一个类似构造来tikz构建类似设置的情况,然后绘制箭头来实现的。由于构造的设置方式以及与包的交互,语法要求在每行末尾使用\&而不是&和。\\matrixtikzamsmath

其次,以下是如何cases在环境中直接用另一个分隔符替换括号cases

示例案例输出

\documentclass[a4paper,11pt]{article}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{amsthm}
\usepackage{tikz}

\makeatletter
\renewenvironment{cases}[1][\lbrace]{%
  \matrix@check\cases\env@cases{#1}
}{%
  \endarray\right.%
}

\def\env@cases#1{%
  \let\@ifnextchar\new@ifnextchar
  \left#1
  \def\arraystretch{1.2}%
  \array{@{}l@{\quad}l@{}}%
}
\makeatother

\begin{document}
\begin{align}
  \mathbf{\nabla}\times \mathbf{E}&=0
  \begin{cases}
    \mathbf{E}=-\mathbf{\nabla}\Phi \\
    \hat{\eta}\times (\mathbf{E_2}-\mathbf{E_1})=0
    &\text{(continiuty)}
  \end{cases}
  \\
  1+1&=2\\
  \mathbf{\nabla}\times \mathbf{E}&=0
  \begin{cases}[\langle]
    \mathbf{E}=-\mathbf{\nabla}\Phi \\
    \hat{\eta}\times (\mathbf{E_2}-\mathbf{E_1})=0
    &\text{(continiuty)}
  \end{cases}
\end{align}

\end{document}

这是通过重新定义环境来采用可选参数并将其放在硬编码的 cases位置的代码中来实现的。\lbrace

在这个版本中,使用tikz图片作为这样的括号是有问题的。首先,需要一个可以通过 调整大小的构造\left。此外,在您的请求中,您有指向每一行的箭头,这很难控制。因此,上面的多箭头代码可能更符合您的要求。

答案2

TikZ 的一个可能方法:

\documentclass[a4paper,11pt]{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{tikz}

%TikZ code "illustrating" the new "brace"
\newcommand{\newbrace}[1][]{
\begin{tikzpicture}[baseline=-0.5ex]
\draw[#1] (0,0) -- (0.3,0.3);
\draw[#1] (0,0) -- (0.3,-0.3);
\end{tikzpicture}
}

% the optional argument allows you to select the type of arrow 
% you can also customize the "new brace"
\newenvironment{casesnew}[1][->]%
{\;\newbrace[#1]\;\begin{array}{@{}l@{}}}%
{\end{array}}


\begin{document}
\begin{align}
\mathbf{\nabla}\times \mathbf{E}=&\; 0
\begin{casesnew}
\mathbf{E}=-\mathbf{\nabla}\Phi \\
\hat{\eta}\times (\mathbf{E_2}-\mathbf{E_1})=0 \; \text{(continuity)}
\end{casesnew}\\
1+1=&\;2
\end{align}

Example with customization:
\begin{align}
\mathbf{\nabla}\times \mathbf{E}=&\;0
\begin{casesnew}[-stealth,red]
\mathbf{E}=-\mathbf{\nabla}\Phi \\
\hat{\eta}\times (\mathbf{E_2}-\mathbf{E_1})=0 \; \text{(continuity)}
\end{casesnew}\\
1+1=&\;2
\end{align}
\end{document}

结果:

在此处输入图片描述

免责声明

该解决方案仅适用于两种情况。

相关内容