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
\overbrace
y \underbrace
están construidos a partir de 5 partes:
- extremo izquierdo;
- (izquierda) regla horizontal;
- punta (arriba/abajo);
- (derecha) regla horizontal;
- 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.
\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 \resetbraceratio
restaura 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.
Elabraces
paqueteahora proporciona una interfaz basada en claves de caracteres para la creación de llaves. Algunos ejemplos de ladocumentación:
La construcción de llaves se basa en combinaciones de caracteres:
Respuesta2
Otra opción es utilizar el infame \tikzmark
y 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
:
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:
- El aparato ortopédico está adaptado deagregar una llave grande al lado de un cuerpo de texto.
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}