我通常使用包cases
中的环境amsmath
-它非常好:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[\begin{cases}
x+y=2 \\
2x+3y=4
\end{cases}\]
\end{document}
图片 1
问题 1
然而,在我的国家,这个符号看起来并不是这样的。它更像是这个——括号略有变化:
是否可以重新定义cases
环境,使其像这样:
图2
图 3
现在说实话我不知道该怎么做。
问题2
除此之外,{
我们还有[
。现在,我[
在cases
环境中使用类似的gathered
,也在包中amsmath
:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[
\left[\begin{gathered}
x=3\hfill\\
x=4\hfill
\end{gathered}\right.
\]
\end{document}
图4
然而,像问题 1上面,我想要得到这种方括号:
图5
怎么做?抱歉,我一点儿头绪都没有 :(
问题 2.1
此外,在我的国家,人们更喜欢这样
图6
与上述问题类似,我发现有很多困难并且失败了。
对于任何问题的任何帮助都将不胜感激!
重要的提示
图 2、3、5、6 是用 Windows Paint 做的。由于 Euclid 字体的行间距较大,所以图片中的行间距比我想要的要大。但是我想要的间距只是 normal,没有那么大。在cases
这种情况下 normal 的默认间距就很合适。
答案1
使用起来相对简单\tikzmatrix
。
我创建了两个新的环境(mycurly
和mybrack
),并带有一个可选参数来指示方程式的数量(如果方程式多于两个)。
代码
\usepackage{expl3}
\ExplSyntaxOn
\int_new:N \g__prg_map_int
\ExplSyntaxOff
仅当您遇到如下错误时才需要:
! Undefined control sequence.
<argument> \g__prg_map_int
(感谢 Joseph Wright解决问题。
\documentclass[12pt,fleqn]{article}
\usepackage{amsmath}
\usepackage{environ}
\usepackage{tikz}
\usetikzlibrary{matrix}
% the following code is needed if you got the error
% ! Undefined control sequence.
% <argument> \g__prg_map_int
% see here
%https://tex.stackexchange.com/questions/463282/undefined-control-sequence-g-prg-map-int
% otherwise, leave it out
\usepackage{expl3}
\ExplSyntaxOn
\int_new:N \g__prg_map_int
\ExplSyntaxOff
% end of temporary code
\usetikzlibrary{decorations.pathreplacing, calligraphy, calc}
\tikzset{
mymatr/.style={
matrix of math nodes,
column sep = 10pt,
nodes={
anchor=text,
inner xsep=3pt
},
inner xsep=7pt,
ampersand replacement={\&},
}
}
\NewEnviron{mybrack}[1][2]{%
\begin{tikzpicture}[baseline=(mybase)]
\matrix[mymatr](A){
\BODY\\
};
\coordinate (mybase) at ($(A-1-1.text)!.5!(A-#1-1.text)$);
\draw[thick]([xshift=-6.4pt]A-1-1.west) -- +(4.4pt,0);
\foreach[evaluate=\mystep as \prev using int(\mystep-1)] \mystep in
{2,...,#1}{
\draw[thick]([xshift=-6pt]A-\prev-1.west) --
([xshift=-6pt]A-\mystep-1.west) -- + (4pt,0);
}
\end{tikzpicture}
}
\NewEnviron{mycurly}[1][2]{%
\begin{tikzpicture}[baseline=(mybase)]
\matrix[mymatr](A){
\BODY\\
};
\coordinate (mybase) at ($(A-1-1.text)!.5! (A-#1-1.text)$);
\draw[line width=.9pt,decorate,decoration={calligraphic
brace,amplitude=4pt, mirror}](A-1-1.west) -- (A-#1-1.west);
\end{tikzpicture}
}
\begin{document}
Environment which puts curly braces:
\[
\begin{mycurly}
\frac{3}{4}x+y=2 \\
e^{2x}+3y=4
\end{mycurly}
\]
if you have more than 2 equation, you have to indicate their number in the
optional argument:
\[
\begin{mycurly}[3]
\frac{3}{4}x+y=2 \\
e^{2x}+3y=4\\
\sqrt{x+3}+5z=0
\end{mycurly}
\]
\[
\begin{mycurly}[4]
x+y=2 \\
2x+3y=4 \\
3x+5z=0 \\
\dfrac{7x}{x+9}+y+z=2
\end{mycurly}
\]
Environment which puts square brackets:
\[
\begin{mybrack}
\frac{3}{4}x+y=2 \\
e^{2x}+3y=4
\end{mybrack}
\]
if you have more than 2 equation, you have to indicate their number in the
optional argument:
\[
\begin{mybrack}[3]
\frac{3}{4}x+y=2 \\
e^{2x}+3y=4\\
\sqrt{x+3}+5z=0
\end{mybrack}
\]
\[
\begin{mybrack}[4]
x+y=2 \\
2x+3y=4 \\
3x+5z=0 \\
\dfrac{7x}{x+9}+y+z=2
\end{mybrack}
\]
Please note you have to use \verb|\&| instead of \verb|&| here:
\[
f(x) =
\begin{mycurly}[4]
\dfrac{1}{3}x+y=2 \& \text{if }x<0 \\
2x+3y=4 \& \text{if }0\leq x<1\\
3x+5z=0 \& \text{if }1\leq x<2\\
\dfrac{7x}{x+9}+y+z=2 \& \text{if } x>2
\end{mycurly}
\]
\[
f(x) =
\begin{mycurly}[3]
2x+3y=4 \& \text{if } x<1\\
3x+5z=0 \& \text{if }1\leq x<2\\
\dfrac{7x}{x+9}+y+z=2 \& \text{if } x>2
\end{mycurly}
\]
It works also with the bracket type (even if I don't know if it is used in
your country):
\[
f(x) =
\begin{mybrack}[4]
\dfrac{1}{3}x+y=2 \& \text{if }x<0 \\
2x+3y=4 \& \text{if }0\leq x<1\\
3x+5z=0 \& \text{if }1\leq x<2\\
\dfrac{7x}{x+9}+y+z=2 \& \text{if } x>2
\end{mybrack}
\]
\[
f(x) =
\begin{mybrack}[3]
2x+3y=4 \& \text{if } x<1\\
3x+5z=0 \& \text{if }1\leq x<2\\
\dfrac{7x}{x+9}+y+z=2 \& \text{if } x>2
\end{mybrack}
\]
\end{document}