如何使用正斜杠显示分数?

如何使用正斜杠显示分数?

使用$\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}

相关内容