2010-05-05 14 views
13

Estoy produciendo algunas láminas de látex (pero creo que no es una pregunta específica para el proyector).Látex: llaves estirables fuera de matemáticas

Tengo el siguiente:

\begin{itemize} 
\item Issue1 
\item Issue2 
\item Issue3 
\end{itemize} 

Ahora, yo quiero tener una llave derecha (es decir, '}') detrás de los objetos que extienden por número1 y número2. Y, por supuesto, quiero escribir algo detrás de esa llave.

En un mundo perfecto que iba a escribir algo como:

\begin{itemize} 
\left . 
\item Issue1 
\item Issue2 
\right \} One and Two are cool 
\item Issue3 
\end{itemize} 

Esto no funciona porque no estoy en un entorno de matemáticas y no puedo poner todo el fragmento dentro de un entorno de matemáticas porque itemize no funcionaría en ese caso.

¿Existe una solución limpia o un truco para obtener el resultado deseado?

Saludos, Bastian.

+0

¿No es solo \} y no \\}? – Paul

+0

Tienes razón. (El fragmento no estaba formateado como código antes, así que tuve que escribir '\\}' para permitir que '\}' apareciera. Después de editar, olvidé eliminar la barra invertida). – basweber

+0

@Svante: Gracias por las correcciones. – basweber

Respuesta

18

Usaría tikz y haré una superposición.

primer incluyen los paquetes apropiados (es posible que no necesita incluir tikz ya que esta es una pregunta proyector):

\usepackage{tikz} 
\usetikzlibrary{decorations.pathreplacing} 

A continuación, cuando haga su lista, asignar nombres a los lugares después de cada elemento:

\begin{itemize} 
    \item Issue 1  
     \tikz[remember picture] \node[coordinate,yshift=0.5em] (n1) {}; 
    \item Issue 2 
     \tikz[remember picture] \node[coordinate] (n2) {}; 
    \item Issue 3 
\end{itemize} 

(Nota: cambié el valor y por medio de una línea tal vez más sería mejor.)

Debido a que utiliza remember picture podemos referirnos a estos lugares en una plantilla:

\begin{tikzpicture}[overlay,remember picture] 
     \path (n2) -| node[coordinate] (n3) {} (n1); 
     \draw[thick,decorate,decoration={brace,amplitude=3pt}] 
      (n1) -- (n3) node[midway, right=4pt] {One and two are cool}; 
    \end{tikzpicture} 

El camino está ahí para hacer frente a los elementos que no tienen la misma anchura. Esta edición proviene de ESultanik's answer.

El resultado es:

alt text

Nota al margen: Puede eliminar todos los remember picture opciones y añadir lo siguiente para agregar automáticamente recuerda a todas las imágenes:

\tikzstyle{every picture}+=[remember picture] 
+0

Eso es todo! ¡Genial! Publiqué un ejemplo adaptado a continuación. Muchas gracias. – basweber

+0

Nunca he usado esto antes, puede que no sea tan bonito cuando los artículos no tienen la misma longitud. En ese caso, es probable que necesites establecer un valor '' x' duro para '\ node's o tal vez usar un ancho de goma como' \ hspace {2in} '. Estoy seguro de que hay una forma inteligente de tikz para calcular el valor máximo 'x' para dos nodos también. – Geoff

+0

Se actualizó para tratar con elementos que tienen diferentes anchos, utilizando la respuesta de ESultanik. – Geoff

3

Una forma de evitar esto sería utilizar un entorno matemático como alinear, poner los puntos a mano (con \ bullet) y luego usar los recursos del entorno matemático para llaves grandes y cosas por el estilo.

+0

Pensé en eso (pero sin saber $ \ bullet $ en particular). ¿Hay alguna manera de producir un símbolo que se parezca a la viñeta predeterminada del entorno de detalles en un documento de beamer? Si es así, esta solución parece bastante aplicable. – basweber

11

Se podría (ab) usar una tabla en su lugar:

\documentclass{article} 
\usepackage{multirow} 

\begin{document} 

\begin{tabular}{ll} 

\textbullet Issue 1 & \multirow{2}{*}{{\LARGE \}} One and Two are cool} \\ 
\textbullet Issue 2              \\ 
\textbullet Issue 3              \\ 

\end{tabular} 

\end{document} 

produce:

eliminado enlace Imageshack muertos

+0

+1: Me gusta esta respuesta mucho mejor que la de @ Seamus. –

+0

@Mark, gracias, aunque al generar '}' en 3 (o más) filas, puede ser demasiado ancho. Pero eso será algo que * basweber * debería/debería intentar y ver por sí mismo. –

+0

Sí, desovando 3 o más artículos está en mi lista de deseos. ;) Y hay otro problema: $ \ bullet $ se ve diferente de la viñeta predeterminada del entorno de detalle (en un documento de beamer). – basweber

0

hice algo similar una vez. Dejé la lista en una columna a la izquierda, y en la columna de la derecha, hice $\right\}$ -thing para que fuera tan alto como \mbox o algo así (que decidí con \vphantom o algo similar). Desafortunadamente no tengo tiempo para desenterrarlo ... En realidad, no tengo tiempo para estar en SO ahora mismo;)

+2

@aioobe, eso es tan feo como las otras soluciones. – aioobe

+1

¿Estás hablando contigo mismo? :) –

+0

Quería poner. el comentario allí antes que otra persona;) – aioobe

5

Aquí es el código Geoffs con algunas pequeñas adaptaciones (solo para otros usuarios de beamer)

\begin{frame}{Example} 

\begin{itemize} 
\item The long Issue 1 
\tikz[remember picture] \node[coordinate,yshift=0.7em] (n1) {}; \\ 
spanning 2 lines 


\item Issue 2 
    \tikz[remember picture] \node[coordinate, xshift=1.597cm] (n2) {}; 
\item Issue 3 

\end{itemize} 

\visible<2->{ 
\begin{tikzpicture}[overlay,remember picture] 
    \draw[thick,decorate,decoration={brace,amplitude=5pt}] 
     (n1) -- (n2) node[midway, right=4pt] {One and two are cool}; 
\end{tikzpicture} 
} % end visible 

\end{frame} 

Ressult (segunda diapositiva de ese marco):

beamer result

Las adaptaciones son:

  • añade el visible comando (porque creo que es útil para mezclar en el corsé más tarde)
  • hizo los artículos más complejos por lo que el uso de xshift se hizo necesario (me di cuenta el valor xshift simplemente por intento y error por lo que es una gota de amargura)
+0

Sí, el 'xshift', esto también me molesta. Yo * sé * que hay una forma de calcular el máximo * x * valor para dos nodos, simplemente no lo sé tikz lo suficiente. – Geoff

+0

Abrí una nueva pregunta: http://stackoverflow.com/questions/2777179/tikz-set-approved-x-value-for-a-node Veamos si alguien tiene una buena solución. – basweber

+0

Bueno. Estaba pensando en hacer eso. He estado perdiendo mucho tiempo tratando de resolverlo por mi cuenta. Hay tantos buenos ejemplos de Tikz, pero es tan flexible que es difícil encontrar exactamente lo que necesita (o cree que necesita). – Geoff

0

He intentado mi idea, a continuación. No funciona: desafortunadamente, las vboxes producidas por el entorno de detalles tienen ancho \textwidth.

La interfaz de usuario de mi sugerencia es buena, y redefiniendo \item debería ser posible conseguir que los elementos vboxes sean de un ancho razonable. O calcule un ancho razonable para las vboxes que contienen los elementos. Pero como ya hay soluciones funcionales, no pasaré más tiempo en esto.

 
\documentclass{article} 

\def\setgrouptext#1{\gdef\grouptext{#1}} 
\newenvironment{groupeditems}{\begin{displaymath}\left.\vbox\bgroup\setgrouptext}{% 
    \egroup\right\rbrace\hbox{\grouptext}\end{displaymath}} 

\begin{document} 

\begin{itemize} 
\item Line 1 
\begin{groupeditems}{Lines 2 and 3 together!} 
\item Line 2 
\item Line 3 
\end{groupeditems} 
\item Line 4 
\end{itemize} 

\end{document}