突出显示内联公式

突出显示内联公式

我需要在每个周围添加彩色背景或边框排队公式。怎么样?

我想确保每个公式的宽度不超过文本宽度的 1/2,以便将它们发布在 Kindle 上,正如我在此处描述的

答案1

这是一个基于 LuaLaTeX 的解决方案。它由两个名为\InlineMathColorOn和 的LaTeX 宏组成\InlineMathColorOff,它们充当开关来激活和停用名为 的 Lua 函数。Lu​​a 函数首先将和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}

相关内容