Saltar al contenido

Una versión de colorbox que funciona en entornos matemáticos

Este equipo de redactores ha estado mucho tiempo buscando para dar resolución a tus interrogantes, te ofrecemos la respuestas por eso esperamos que te sea de gran apoyo.

Solución:

El problema aquí es que colorbox revierte su argumento de nuevo al modo de texto. Y, dado que está utilizando macros relacionadas con las matemáticas (como left, right, frac y ell) en modo texto, TeX se queja de que falta $. Por lo tanto, debe indicar explícitamente que está en modo matemático usando:

newcommandhighlight[1]colorboxyellow$displaystyle #1$

He agregado el displaystyle para asegurarse de que sus fracciones y delimitadores se expandan como de costumbre. Si este comportamiento no es deseado, puede modificarlo o eliminarlo.

Sobre ese tema, amsmath proporciona dfrac que es la abreviatura de displaystylefrac. Tal uso explícito de fracciones de estilo de visualización / texto funciona bien para forzar la intención de uno, y eliminaría el uso de displaystyle.

ingrese la descripción de la imagen aquí


Es posible mejorar la highlight macro para detectar el tipo de modo matemático que se está utilizando. Esto es posible usando mathchoice que proporciona opciones de composición tipográfica para 4 estilos diferentes:

mathchoice

En la versión actualizada de highlight el modo matemático se detecta antes de usar colorbox, y cambió en consecuencia dentro de él. Además, para generalizar, agregué un argumento opcional a highlight que le permite cambiar el color (el valor predeterminado es yellow) como se muestra en el MWE:

ingrese la descripción de la imagen aquí

documentclassarticle
usepackageamsmath% http://ctan.org/pkg/amsmath
usepackagexcolor% http://ctan.org/pkg/xcolor
newcommandabs[1]lvert#1rvert
newcommandAbs[1]leftlvert#1rightrvert

% highlight[]
newcommandhighlight[2][yellow]mathchoice%
  colorbox#1$displaystyle#2$%
  colorbox#1$textstyle#2$%
  colorbox#1$scriptstyle#2$%
  colorbox#1$scriptscriptstyle#2$%

begindocument
beginalignat*2
  & lim_Delta x to 0 fracDelta yDelta x = ell \
  iff & forall epsilon > 0, , exists delta > 0 text s.t. if 
    0 < absDelta x - 0 < delta,
    text then  AbsfracDelta yDelta x - ell < epsilon \
iff & forall epsilon > 0, , exists delta > 0 text s.t. if 
    0 < highlightabsx - x_0 < delta, text then 
    highlight[green]Absfracf(x) - f(x_0)x-x_0 - ell < epsilon
endalignat*    
enddocument

Otra forma es usar ensuremath:

newcommandhighlight[1]colorboxyellowensuremath#1

Esto también tiene el efecto deseado.

Tengo un código para resaltar texto que está diseñado específicamente para usar con la clase beamer. Utiliza TikZ, pero cargo TikZ de todos modos en mis presentaciones, por lo que no hay gastos adicionales. Las principales características de esta solución son:

  1. El mismo código es para texto como matemáticas,
  2. El resaltado se dibuja en el lienzo de fondo y también detrás el texto,
  3. El estilo del resaltador se puede personalizar considerablemente a través de PGF keys,
  4. Hace un trabajo razonable de ajuste de línea.

Es posible adaptar esto a una solución sin beamer, ya sea usando el código de Martin Scharer para dibujar en el fondo de una página, o adaptando el uso de encabezados de beamer (ab) para colocar código detrás del texto.

Aquí está el código:

documentclassbeamer
usepackageamsmath
usepackagetikz

makeatletter
%
% Highlighter code
%

newbox[email protected]
let[email protected]=@empty
defbeamertemplatebackground canvashighlighter%
  ifbeamercolorempty[bg]background canvascolorbgvrule widthpaperwidth heightpaperheight%
  begingroup
  setbox[email protected]=hboxbegintikzpicture[remember picture,overlay]
    node[minimum width=textwidth, minimum height=textheight, anchor=south east] (page) at (-[email protected],footheight) ;
    [email protected]
  endtikzpicture%
  wd[email protected]=0ptht[email protected]=0ptdp[email protected]=0pt%
    vboxhboxbox[email protected]%
  globallet[email protected]=@empty
  endgroup

newcommandaddtobg[1]%
  [email protected]@macro[email protected]#1%


newcounterhighlight
newcommandhlstarttikz[remember picture,overlay,baseline=-0.7ex] coordinate (hlstartthevaluehighlight);[email protected]
newcommandhlendtikz[remember picture,overlay,baseline=-0.7ex] coordinate (hlendthevaluehighlight);[email protected]stepcounterhighlight

newcommand[email protected][1][]%
  edef@temp%
    noexpandaddtobgnoexpandtikzset#1noexpand[email protected]thevaluehighlight%
  %
  @temp


newcommand[email protected]

newcommand[email protected][1] page.west) -- (0,[email protected] -

tikzset%
  highlight/.style=
    color=pgfkeysvalueof/tikz/highlighter colour,
    line width=pgfkeysvalueof/tikz/highlighter width,
    line cap=pgfkeysvalueof/tikz/highlighter cap,
  ,
  highlighter colour/.initial=yellow,
  highlighter width/.initial=12pt,
  highlighter cap/.initial=butt,


setbeamercolorhighlighted textbg=yellow

newcommand<>highlight[2][]%
  only#3hlstart[#1]#2only#3hlend

makeatother
setbeamertemplatebackground canvas[highlighter]
newcommandabs[1]lvert#1rvert
newcommandAbs[1]leftlvert#1rightrvert

begindocument
beginframe
small
beginalignat*2
&lim_Delta x to 0 fracDelta yDelta x = ell \
iff& forall epsilon > 0, , exists delta > 0 text s.t. if 
0 < absDelta x - 0 < delta,
text then  AbsfracDelta yDelta x - ell < epsilon \
iff& forall epsilon > 0, , exists delta > 0 text s.t. if 
0 < highlightabsx - x_0 < delta, text then 
highlight[highlighter colour=green,highlighter width=1cm]Absfracf(x) - f(x_0)x-x_0 - ell < epsilon
endalignat*
endframe
enddocument

Con una muestra:

texto resaltado

Valoraciones y reseñas

Si crees que ha resultado de utilidad nuestro post, nos gustaría que lo compartas con más seniors y nos ayudes a extender este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *