Tirantes asimétricos

Tirantes asimétricos

Esta pregunta condujo a un nuevo paquete:
abraces

¿Cómo puedo controlar la posición de la púa de un corsé?

por ejemplo quiero:

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

aksdj ajksdnkajs ajsdknakjsnd jaknd

Opuesto a:

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

aksdj ajksdnkajs ajsdknakjsnd jaknd

Respuesta1

\overbracey \underbraceestán construidos a partir de 5 partes:

  1. extremo izquierdo;
  2. (izquierda) regla horizontal;
  3. punta (arriba/abajo);
  4. (derecha) regla horizontal;
  5. extremo derecho.

Dado que ambas reglas horizontales son líderes, es bastante fácil modificarlas utilizando un enfoque "compartido". Es decir, puede cambiar la proporción del líder izquierdo en comparación con el derecho, moviendo así la punta hacia la izquierda o hacia la derecha. Por ejemplo, compartir el líder izquierdo/derecho en una proporción de 1:2 colocaría la punta a 1/3 del camino hacia adentro, mientras que una proporción de 3:2 colocaría la punta al 60% del camino hacia adentro. El valor predeterminado sería un centrado. Relación /1:1.

ingrese la descripción de la imagen aquí

\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>}establece la relación entre las partes izquierda y derecha de las llaves, mientras \resetbraceratiorestaura el valor predeterminado (o 1:1).

El problema con este enfoque es que el centro horizontal puede diferir de la ubicación donde está la punta. Como tal, agregar texto como superíndice/subíndice tendría que moverse a la posición apropiada. Sería posible ampliar esta solución para trabajar con longitudes en lugar de proporciones. Sin embargo, eso requeriría algunas pruebas para asegurarse de no exceder el ancho del cuadro; las proporciones se encargan de esto de forma natural.


Elabracespaqueteahora proporciona una interfaz basada en claves de caracteres para la creación de llaves. Algunos ejemplos de ladocumentación:

ingrese la descripción de la imagen aquí

La construcción de llaves se basa en combinaciones de caracteres:

ingrese la descripción de la imagen aquí

Respuesta2

Otra opción es utilizar el infame \tikzmarky utilizar una decoración de tirantes con elaspect=<percent> para controlar la ubicación de la púa. He aquí una versión adaptada de¿Llave para insertar algo en una ecuación? Como un corsé invertidolo que le brinda toda la flexibilidad inherente de tikz:

ingrese la descripción de la imagen aquí

Los parámetros pasados \InsertUnderBrace​​son:

  • [#1]opciones de dibujo tikz,

  • [#2]opciones de aparatos ortopédicos tikz,

  • {#3}nombre de la izquierda \tikzmark,

  • {#4}nombre del derecho \tikzmark,

  • {#5}texto que se colocará debajo de la llave.

Notas:

  • Esto requiere dos ejecuciones. El primero para determinar las ubicaciones y el segundo para hacer el dibujo.

Referencias:

Código:

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

información relacionada