我想知道是否有办法将案例的符号(花括号)更改为指向上/左和下/左的两个箭头。
\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
构建类似设置的情况,然后绘制箭头来实现的。由于构造的设置方式以及与包的交互,语法要求在每行末尾使用\&
而不是&
和。\\
matrix
tikz
amsmath
其次,以下是如何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}
结果:
免责声明
该解决方案仅适用于两种情况。