使用$\frac{x + 5}{y - 4}$
会使方程式变得非常长且难以阅读。我更希望能够将其写入$(x + 5)/(y - 4)$
并将其解释为$\frac{x + 5}{y - 4}$
。我该如何编写一个命令来实现这一点?
答案1
这是一个基于 LuaLaTeX 的解决方案。它由两个 LaTeX 宏(称为\InlineToDispOn
和\InlineToDispOff
)以及一个名为 的 Lua 函数组成inline_to_disp
。当通过 激活时\InlineToDispOn
,Lua 函数会扫描所有输入行并将 的所有实例替换为(...)/(...)
。\frac{...}{...}
(将分子和分母项括起来的括号被删除。)
一些额外的评论:
使用宏
\InlineToDispOff
来停用 Lua 功能。如果您的文档中有需要复制的段落,则可能需要这样做逐字。分子或分母中嵌套匹配括号是可以的,但只处理最外层的括号。因此,
(2(x+5))/(y-4)
将被转换为\frac{2(x+5)}{y-4}
。除法符号左右两侧
/
允许有空格。根据您的描述,更换操作需要分子和分母都要放在成对的括号中。
根据设计,Lua 函数
inline_to_disp
确实不是x/y
对、(a)/b
或等表达式进行运算c/(d)
。(x+5)/(y-4)
如果你有以下形式的表达式不是想要将其改为\frac{x+5}{y-4}
,就将其改为(x+5){}/(y-4)
。空的数学组 ,{}
将确保gsub
里面的函数inline_to_disp
不会执行成功匹配。
(...)/(...)
在给定的输入行中可能会出现任意数量的实例。(请参阅下面的示例。)不执行任何类型的输入健全性检查。
如果分子和分母项从 LaTeX 的角度来看在语法上无效和/或包裹分子和分母项的括号不匹配,则 Latex 将生成各种神秘的警告和错误消息。
Lua 函数也不会检查是否
(...)/(...)
在(显示或内联)数学模式下出现;如果在文本模式下出现,Latex 将崩溃并出现注释,您猜对了,该注释\frac
不允许在文本模式下出现。我相信,这不是什么限制,因为您正在寻找某种方式来替换各种现有\frac
表达式。
下面的截图中,上行用 排版\textstyle
,下行用 排版\displaystyle
:
% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{luacode} % for 'luacode' environment
\begin{luacode}
function inline_to_disp ( s )
s = s:gsub ( "(%b())%s-/%s-(%b())" , function (u,v)
u = u:sub(2,-2) -- strip off the parentheses
v = v:sub(2,-2)
return "\\frac{"..u.."}{"..v.."}"
end )
return s
end
\end{luacode}
%% LaTeX-side code:
\newcommand\InlineToDispOn{\directlua{%
luatexbase.add_to_callback("process_input_buffer",
inline_to_disp, "InlineToDisp" )}}
\newcommand\InlineToDispOff{\directlua{%
luatexbase.remove_from_callback("process_input_buffer",
"InlineToDisp" )}}
\AtBeginDocument{\InlineToDispOn} %activate by default
\begin{document}
$(x+5)/(y-4) \quad (x) / (y) \quad (2(x+5))/(y-4) \quad 2(x+5)/ (y-4) \quad x/y$
\bigskip
$\displaystyle % same as above, but now with \displaystyle instead of \textstyle
(x+5)/(y-4) \quad (x) / (y) \quad (2(x+5))/(y-4) \quad 2(x+5)/ (y-4) \quad x/y$
\end{document}
答案2
我不太明白原帖者的问题。原帖者想要$\frac{a}{b}$
用${a}/{b}$ because the
\frac` 宏替换的“难以阅读”(对于作者而言,而不是读者而言)。为什么不直接使用正斜杠呢?
% fracprob2.tex SE 515788 Forward slash for fractions
\documentclass{article}
\begin{document}
Inline math:
Some text $\frac{a}{b}$ more text $a/b$ that's it.
Displaymath:
\[
\frac{a}{b} , a/b
\]
\end{document}