新的 \left\right 分隔符

新的 \left\right 分隔符

\left我可以引入新的分隔符来与and一起使用吗\right?例如,我想这样做

\begin{equation}
\left\harpoonleft something \right\harpoonright
\end{equation}

然后我希望符号的大小取决于something符号之间的大小。

我怎麼會做這樣的事?

答案1

我的意思是,问题中提到了鱼叉,没有箭。因为在常见的数学符号中没有鱼叉部分,并且 会使\resizebox鱼叉标记变形,所以我建议另一种解决方案:使用 将鱼叉部分绘制为 PDF 代码\pdfliteral。其余的很简单\vrule

\documentclass{article}

\def\leftharpoonpart  {\pdfliteral{q 0 0 m 0 -2.1 -1.2 -2.8 -1.5 -3 c 1 j .4 w S Q}}
\def\rightharpoonpart {\pdfliteral{q 0 0 m 0 -2.1  1.2 -2.8  1.5 -3 c 1 j .4 w S Q}}

\def\encloseharpoons#1{\setbox0=\hbox{$\displaystyle{#1}$}%
   \mathop{\,\vrule height\ht0 depth\dp0
   \kern-.2pt \raise\ht0\vbox to0pt{\vss\leftharpoonpart\kern.1pt}%
   \copy0
   \raise\ht0\vbox to0pt{\vss\rightharpoonpart\kern.1pt}\kern-.2pt\vrule\,}%
   \nolimits
}
\begin{document}

$$a \cdot \encloseharpoons{\int_a^b} + \encloseharpoons{1\over2}^2$$

\end{document}

当然,不需要任何特殊的包。结果是

鱼叉

细节:

鱼叉细节

您必须使用pdflatexlualatexxelatex使用 时,您需要添加定义:

\def\pdfliteral#1{\special{pdf:literal #1}}

答案2

如果你想使用 Tikz 创建分隔符:

\documentclass{article}
\usepackage{tikz}

\newcommand{\leftdelim}[2]% #1 = height, #2 = depth
{\tikz[baseline]{\draw[color=red,arrows={-latex}](0,-#2)--(0,#1);}}

\newcommand{\rightdelim}[2]% #1 = height, #2 = depth
{\tikz[baseline]{\draw[color=red,arrows={latex-}](0,-#2)--(0,#1);}}

\newlength{\MyHeight}
\newlength{\MyDepth}
\newsavebox{\MyBox}

\newcommand{\mydelim}[1]% #1 = text to be enclosed
{\savebox{\MyBox}{$\displaystyle #1$}% get size of box
\settoheight{\MyHeight}{\usebox{\MyBox}}%
\settodepth{\MyDepth}{\usebox{\MyBox}}%
\leftdelim{\MyHeight}{\MyDepth}%
\,\usebox{\MyBox}\,%
\rightdelim{\MyHeight}{\MyDepth}}

\begin{document}
\[
\mydelim{\frac{x+a}{x+b}}
\]
\end{document}

分隔符

如果你不想使用 tikz:

\documentclass{article}
\usepackage{graphics}

\newlength{\MyHeight}
\newlength{\MyDepth}
\newlength{\MyDiff}
\newsavebox{\MyBox}

\newcommand{\mydelim}[1]% #1 = text to be enclosed
{\savebox{\MyBox}{$\displaystyle #1$}% get size of box
\settoheight{\MyHeight}{\usebox{\MyBox}}%
\settodepth{\MyDepth}{\usebox{\MyBox}}%
\addtolength{\MyHeight}{\MyDepth}%
\settodepth{\MyDiff}{$\uparrow$}
\addtolength{\MyDiff}{-\MyDepth}
\raisebox{\MyDiff}{\resizebox{\width}{\MyHeight}{$\uparrow$}}%
\,\usebox{\MyBox}\,%
\raisebox{\MyDiff}{\resizebox{\width}{\MyHeight}{$\downarrow$}}}

\begin{document}
\[
\mydelim{\frac{x+a}{x+b}}
\]
\end{document}

调整大小

答案3

这是John Kormylo 的回答——它可以起作用,但是有一个小怪癖:它对数学风格进行硬编码。

这是什么意思?例如,考虑这个定义:

\[ \mydelim{\frac{x+a}{x+b}} \]

$ \mydelim{\frac{x+a}{x+b}} + \frac{x+a}{x+b} $

与自定义分隔符外面的公式相比,第二个公式太大。

输出

修复此问题的一种方法是手动添加命令\textstyle

$ \mydelim{\textstyle \frac{x+a}{x+b}} \frac{x+a}{x+b} $

(在这种情况下你根本不需要\displaystyle

另一种方法是修改命令定义,如下所示:

\documentclass{article}
\usepackage{tikz}
\usepackage{amsmath}  % ← note the added package

\newcommand{\leftdelim}[2]% #1 = height, #2 = depth
{\tikz[baseline]{\draw[color=red,arrows={-latex}](0,-#2)--(0,#1);}}

\newcommand{\rightdelim}[2]% #1 = height, #2 = depth
{\tikz[baseline]{\draw[color=red,arrows={latex-}](0,-#2)--(0,#1);}}

\newlength{\MyHeight}
\newlength{\MyDepth}
\newsavebox{\MyBox}

\newcommand{\mydelim}[1]% #1 = text to be enclosed
{\text{\savebox{\MyBox}{$#1$}% get size of box
\settoheight{\MyHeight}{\usebox{\MyBox}}%
\settodepth{\MyDepth}{\usebox{\MyBox}}%
\leftdelim{\MyHeight}{\MyDepth}%
\,\usebox{\MyBox}\,%
\rightdelim{\MyHeight}{\MyDepth}}}

\begin{document}
\[ \mydelim{\frac{x+a}{x+b}} \]

$ \mydelim{\frac{x+a}{x+b}} + \frac{x+a}{x+b} $
\end{document}

这给出了期望的结果。

固定输出

该命令的解释\text可以在以下位置找到旋转 - 具有正确字体大小的旋转数学

相关内容