![突出显示内联公式](https://linux22.com/image/404417/%E7%AA%81%E5%87%BA%E6%98%BE%E7%A4%BA%E5%86%85%E8%81%94%E5%85%AC%E5%BC%8F.png)
我需要在每个周围添加彩色背景或边框排队公式。怎么样?
我想确保每个公式的宽度不超过文本宽度的 1/2,以便将它们发布在 Kindle 上,正如我在此处描述的。
答案1
这是一个基于 LuaLaTeX 的解决方案。它由两个名为\InlineMathColorOn
和 的LaTeX 宏组成\InlineMathColorOff
,它们充当开关来激活和停用名为 的 Lua 函数。Lua 函数首先将和inlinemath_yellow
的情况搁置一旁,然后将和的所有实例包裹在黄色框中,最后恢复和的情况。Lua 函数通过回调进行操作,回调在处理的早期阶段完成其工作,远在 TeX 应用其眼睛、嘴巴等之前。\$
$$
$...$
\(...\)
\$
$$
process_input_buffer
此代码无法实现的是允许在内联数学公式中自动换行。但是,您不会在您的书中允许许多这样的构造,对吗?
% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{xcolor} % for '\colorbox' macro
\usepackage{luacode} % for 'luacode' environment
\begin{luacode}
function inlinemath_yellow ( s )
s = s:gsub ( "\\%$" , "@@@@@@@@@@@@" ) -- instances of "\$"
s = s:gsub ( "%$%$" , '""""""""""""' ) -- instances of "$$"
s = s:gsub ( "(%$..-%$)" , function ( u )
return "\\colorbox{yellow}{$"..u:sub(2,-2).."\\strut$}"
end )
s = s:gsub ( "(\\%(..-\\%))" , function ( u )
return "\\colorbox{yellow}{\\("..u:sub(3,-3).."\\strut\\)}"
end )
s = s:gsub ( "@@@@@@@@@@@@" , "\\$" ) -- revert instances of "\$"
s = s:gsub ( '""""""""""""' , "$$" ) -- revert instances of "$$"
return s
end
\end{luacode}
%% LaTeX-side code:
\newcommand\InlineMathColorOn{\directlua{%
luatexbase.add_to_callback ( "process_input_buffer" ,
inlinemath_yellow , "InlineMathYellow" )}}
\newcommand\InlineMathColorOff{\directlua{%
luatexbase.remove_from_callback ("process_input_buffer" ,
"InlineMathYellow" )}}
\AtBeginDocument{\InlineMathColorOn} % activate by default
\begin{document}
$1+1+1\ne2$,
$1$,
\(a^2+b^2=c^2\),
\(\$12.34\),
\$12.34
$$a^2+b^2=c^2$$ % not inline math
\end{document}