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.
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:
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:
- El mismo código es para texto como matemáticas,
- El resaltado se dibuja en el lienzo de fondo y también detrás el texto,
- El estilo del resaltador se puede personalizar considerablemente a través de PGF keys,
- 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:
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.