비대칭 오버브레이스

비대칭 오버브레이스

이 질문으로 인해 새로운 패키지가 탄생했습니다.
abraces

오버브레이스의 스파이크 위치를 어떻게 제어할 수 있나요?

예를 들어 나는 다음을 원한다:

/------^---------\

aksdj ajksdnkajs ajsdknakjsnd jaknd

반대로:

/---------------^---------------\

aksdj ajksdnkajs ajsdknakjsnd jaknd

답변1

\overbrace\underbrace5개 부품으로 구성됩니다 .

  1. 왼쪽 끝;
  2. (왼쪽) 수평선;
  3. 팁(위/아래);
  4. (오른쪽) 수평선;
  5. 오른쪽 끝.

두 수평 규칙 모두 지시선이므로 "공유" 접근 방식을 사용하여 수정하는 것은 쉽습니다. 즉, 오른쪽 리더와 비교하여 왼쪽 리더의 점유율을 변경하여 팁을 왼쪽이나 오른쪽으로 이동할 수 있습니다. 예를 들어, 왼쪽/오른쪽 지시선을 1:2 비율로 공유하면 팁이 1/3 정도 안으로 들어가고, 3:2 비율로 사용하면 팁이 60% 안으로 들어가게 됩니다. 기본값은 중앙에 있는 것입니다. /1:1 비율.

여기에 이미지 설명을 입력하세요

\documentclass{article}
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\usepackage{multido}% http://ctan.org/pkg/multido

\makeatletter
\def\@@bfil{\leaders \vrule \@height \ht\z@ \@depth \z@ \hfill}% default brace filler
\def\@bLfil{\@@bfil}% left leader filler
\def\@bRfil{\@@bfil}% right leader filler
\def\resetbraceratio{\gdef\@bLfil{\@@bfil}\gdef\@bRfil{\@@bfil}}% reset to default braces
\def\setbraceratio#1#2{% \setbraceratio{<left>}{<right>}
  \let\@bLfil\relax% clear left filler
  \multido{\iA=1+1}{#1}{\gappto\@bLfil{\@@bfil}}% increase left ratio
  \let\@bRfil\relax% clear right filler
  \multido{\iA=1+1}{#2}{\gappto\@bRfil{\@@bfil}}% increase right ratio
}
\def\upbracefill{$\m@th\setbox\z@\hbox{$\braceld$}\bracelu\@bLfil\bracerd\braceld\@bRfil\braceru$}
\def\downbracefill{$\m@th\setbox\z@\hbox{$\braceld$}\braceld\@bLfil\braceru\bracelu\@bRfil\bracerd$}
\makeatother

\begin{document}

\setbraceratio{3}{1}% 3:1 ratio
$\underbrace{\textrm{The quick brown fox jumped over the lazy dog}}$ \par
\setbraceratio{1}{5}% 1:5 ratio
$\underbrace{\textrm{The quick brown fox jumped over the lazy dog}}$ \par
\setbraceratio{7}{2}% 7:2 ratio
$\overbrace{\textrm{The quick brown fox jumped over the lazy dog}}$ \par

\end{document}

\setbraceratio{<left>}{<right>}괄호의 왼쪽 부분과 오른쪽 부분 사이의 비율을 설정하고 \resetbraceratio기본값(또는 1:1)으로 복원합니다.

이 접근 방식의 문제점은 수평 중심이 팁이 있는 위치와 다를 수 있다는 것입니다. 따라서 위 첨자/아래 첨자로 텍스트를 추가하면 적절한 위치로 이동되어야 합니다. 비율이 아닌 길이로 작업하도록 이 솔루션을 확장할 수 있습니다. 그러나 상자 너비를 초과하지 않는지 확인하려면 몇 가지 테스트가 필요합니다. 비율이 이를 자연스럽게 처리합니다.


그만큼abraces패키지이제 버팀대 생성을 위한 문자 키 기반 인터페이스를 제공합니다. 몇 가지 예는 다음과 같습니다.선적 서류 비치:

여기에 이미지 설명을 입력하세요

중괄호 구성은 문자 조합을 기반으로 합니다.

여기에 이미지 설명을 입력하세요

답변2

또 다른 옵션은 악명 높은 을 사용 하고 스파이크의 위치를 ​​제어하기 위해 \tikzmark버팀대 장식을 사용하는 것입니다 . aspect=<percent>다음은방정식에 무언가를 삽입하는 중괄호? 거꾸로 된 밑받침처럼이는 다음과 같은 고유한 유연성을 제공합니다 tikz.

여기에 이미지 설명을 입력하세요

전달되는 매개변수는 \InsertUnderBrace다음과 같습니다.

  • [#1]tikz 그리기 옵션,

  • [#2]tikz 버팀대 옵션,

  • {#3}왼쪽의 이름 \tikzmark,

  • {#4}오른쪽 이름 \tikzmark,

  • {#5}중괄호 아래에 배치할 텍스트입니다.

노트:

  • 이를 위해서는 두 번의 실행이 필요합니다. 첫 번째는 위치를 결정하고 두 번째는 도면을 작성합니다.

참고자료:

암호:

\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{decorations.pathreplacing}

\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}

% Tweak these as necessary
\newcommand*{\BraceAmplitude}{0.4em}%
\newcommand*{\BraceAspect}{0.5}% 
\newcommand*{\VerticalOffset}{0.4ex}%  
\newcommand*{\HorizontalOffset}{0.0em}% 


\NewDocumentCommand{\InsertUnderBrace}{%
    O{} % #1 = draw options
    O{} % #2 = optional brace options
    m   % #3 = left tikzmark
    m   % #4 = right tikzmark
    m   % #5 = text to place underbrace
}{%
    \begin{tikzpicture}[overlay,remember picture]
\draw [decoration={brace, amplitude=\BraceAmplitude, aspect=\BraceAspect, #2}, decorate, thick, draw=blue, text=black, #1]
        ($(#4)+(\HorizontalOffset,-\VerticalOffset)$) -- 
        ($(#3)+(-\HorizontalOffset,-\VerticalOffset)$)
        node [below=\VerticalOffset, midway] {#5};
    \end{tikzpicture}%
}%


\begin{document}
\[
    \tikzmark{StartBraceA} \sin^2 \alpha + \cos^2 \theta \tikzmark{EndBraceA}
    \qquad
    \tikzmark{StartBraceB} \sin^2 \alpha + \cos^2 \theta \tikzmark{EndBraceB}
    \qquad
    \tikzmark{StartBraceC} \sin^2 \alpha + \cos^2 \theta \tikzmark{EndBraceC}
\]

\InsertUnderBrace[draw=red,text=blue]{StartBraceA}{EndBraceA}{default}

\InsertUnderBrace[draw=violet,text=blue][aspect=0.25]{StartBraceB}{EndBraceB}{$\mathrm{aspect} = 0.25$}

\InsertUnderBrace[draw=brown,text=blue, densely dotted][aspect=0.75]{StartBraceC}{EndBraceC}{$\mathrm{aspect} = 0.75$}

\end{document}

관련 정보