如何用 \frac{}{} 替换所有“斜线”除法表达式?

如何用 \frac{}{} 替换所有“斜线”除法表达式?

有没有办法自动 .../...替换\frac{...}{...}

例如,143/23应呈现为\frac{143}{23}

答案1

这是一个基于 LuaLaTeX 的解决方案。它适用于分子和分母都只包含(一个或多个)数字的所有分数表达式,并且它在内联数学和显示数学模式下都有效。为了\frac工作,分数项必须处于数学模式材料中。只有带有数字的分数表达式才会被处理;a/b诸如不是被修改。

如果您想要在整个文档中使用“大”分数,请务必加载amsmath包并在下面的 Lua 函数中更改frac为。dfrac

如果您好奇的话:lua 函数replace_slash使用所谓的捕获来识别分子和分母项。lua 函数被分配给回调process_input_buffer。这意味着该函数对输入进行操作TeX 开始自己的处理。因此,TeX 的“眼睛”永远不会看到诸如 这样的表达式$1/2$;相反,它们只能看到 这样的表达式$\frac{1}{2}$

(附录 2015 年 11 月 9 日:对 Lua 代码进行了概括,以便(i)有符号整数(正或者(负)并且(ii)输入中的任何空格都得到正确处理。)

在此处输入图片描述

% !TEX TS-program = lualatex
\documentclass{article}

\usepackage{luacode} 

\begin{luacode}
function replace_slash ( line )
   return string.gsub ( line, "([%+%-]?%d+)%s-/%s-([%+%-]?%d+)", "\\frac{%1}{%2}" )
end
luatexbase.add_to_callback ( "process_input_buffer", replace_slash , "replace_slash" )
\end{luacode}

\begin{document}

How do we know that $55/110=1/2$?

\bigskip
$\displaystyle 55/110 = 1/2 $

\bigskip
Not modified: $a/(b+c)$, $x/y$, $2/x$
\end{document}

附录!:在分子和/或分母中允许使用可选的阶乘符号,即,非常简单:在 Lua 函数中,只需替换搜索字符串

   "([%+%-]?%d+)%s-/%s-([%+%-]?%d+)"

   "([%+%-]?%d+!?)%s-/%s-([%+%-]?%d+!?)"

在 Lua 的模式匹配术语中,%s-表示“0 次或多次出现空格”,而!?子字符串表示“0 次或 1 次!”。经过此修改,$3! / 2!$将被排版为$\frac{3!}{2!}$

答案2

有 TeX 原语\over\frac不一样,但基本情况下的结果相同。因此你可以写

\catcode`\/=13
\def/{\over}

/制作主动角色有一些缺点,但这是你的选择。

您情况下的 MWE(请在将来做出这些改变):

\documentclass{article}

\begin{document}
\catcode`\/=13
\def/{\over}

\[
143/23
\]

\end{document} 

相关内容