Asymmetrische Überbrust

Asymmetrische Überbrust

Diese Frage führte zu einem neuen Paket:
abraces

Wie kann ich die Position des Dorns einer Überstrebe steuern?

zB ich will:

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

aksdj ajksdnkajs ajsdknakjsnd jaknd

Im Gegensatz zu:

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

aksdj ajksdnkajs ajsdknakjsnd jaknd

Antwort1

\overbraceund \underbracebestehen aus 5 Teilen:

  1. linkes Ende;
  2. (links) horizontale Linie;
  3. Tipp (hoch/runter);
  4. (rechts) horizontale Linie;
  5. rechtes Ende.

Da beide horizontalen Linien Führungslinien sind, ist es einfach genug, sie mit einem „geteilten“ Ansatz zu ändern. Das heißt, Sie können den Anteil der linken Führungslinie im Vergleich zur rechten ändern und dadurch die Spitze nach links oder rechts verschieben. Wenn Sie beispielsweise die linke/rechte Führungslinie im Verhältnis 1:2 teilen, würde die Spitze 1/3 des Wegs hineinliegen, während sie bei einem Verhältnis von 3:2 60 % des Wegs hineinliegen würde. Die Standardeinstellung wäre ein zentriertes Verhältnis von 1:1.

Bildbeschreibung hier eingeben

\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>}Legt das Verhältnis zwischen dem linken und rechten Teil der Klammern fest und \resetbraceratiostellt den Standardwert (oder 1:1) wieder her.

Das Problem bei diesem Ansatz ist, dass die horizontale Mitte von der Position der Spitze abweichen kann. Daher müsste der hinzugefügte Text als Hoch-/Tiefstellung an die entsprechende Position verschoben werden. Es wäre möglich, diese Lösung so zu erweitern, dass sie mit Längen statt mit Verhältniswerten arbeitet. Dies würde jedoch einige Tests erfordern, um sicherzustellen, dass Sie die Breite des Felds nicht überschreiten – die Verhältniswerte kümmern sich auf natürliche Weise darum.


DerabracesPaketbietet jetzt eine zeichentastengesteuerte Schnittstelle zur Klammernerstellung. Einige Beispiele aus demDokumentation:

Bildbeschreibung hier eingeben

Die Klammernkonstruktion basiert auf Zeichenkombinationen:

Bildbeschreibung hier eingeben

Antwort2

Eine andere Möglichkeit besteht darin, das berüchtigte zu verwenden \tikzmarkund eine Klammerdekoration mit dem zu verwenden, aspect=<percent>um die Position des Spikes zu steuern. Hier ist eine Version, die von angepasst wurdeGeschweifte Klammer, um etwas in eine Gleichung einzufügen? Wie eine umgekehrte UnterklammerDas bietet Ihnen die gesamte Flexibilität von tikz:

Bildbeschreibung hier eingeben

Die übergebenen Parameter \InsertUnderBracesind:

  • [#1]Tikz-Zeichenoptionen,

  • [#2]Tikz-Klammeroptionen,

  • {#3}Name von links \tikzmark,

  • {#4}Name des Rechts \tikzmark,

  • {#5}Text, der unter der Klammer platziert werden soll.

Anmerkungen:

  • Hierzu sind zwei Durchgänge erforderlich. Zunächst zum Bestimmen der Standorte und dann zum Anfertigen der Zeichnung.

Verweise:

Code:

\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}

verwandte Informationen