格式化方程式 - 使用 $$ 编号方程式

格式化方程式 - 使用 $$ 编号方程式

我试图找到如何在 LaTeX 中对方程式进行编号。在Peter Grill 建议使用

\begin{equation}
%equation...
\end{equation}

不过,我几乎用

$$
%equation...
$$

是否有任何简单的方法可以使所有或部分方程式编号,而无需改变所有$$...$$环境equation

答案1

是否有简单的方法可以使所有...方程式编号而不改变所有$$...$$

如果你可以自由地使用 LuaLaTeX 来编译你的文档,以下解决方案——它是这个答案—— 应该会引起您的兴趣。它设置了一个 Lua 函数,充当预处理器,根据情况自动将所有的实例替换$$\begin{equation}或,\end{equation}$$LaTeX 开始其常规处理。Lua 函数还知道如果在一行中遇到成对的符号(例如$$a^2+b^2=c^2$$或 )该怎么做$$ e^{i\pi}-1=0 $$

下面的答案还设置了两个实用宏:\ReplaceDoubleDollarsOn\ReplaceDoubleDollarsOff。前者打开 Lua 函数,后者将其关闭。能够关闭 Lua 函数应该很有用,例如,如果您的文档包含具有实例的 URL 字符串$$,或者它包含包含实例的逐字材料$$

在此处输入图片描述

% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{luacode}    % for 'luacode' environment
\begin{luacode}
in_display_math = false -- initialize a Boolean variable
function replace_ddollar ( line )
   line = line:gsub ( "%$%$(.-)%$%$" , -- pairs of "$$" on 1 line
              "\\begin{equation} %1 \\end{equation}" )
   line = line:gsub ( "%$%$" , function (x) -- found single instance of "$$"
                    if not in_display_math then
                       in_display_math = true
                       return "\\begin{equation}" 
                    else
                       in_display_math = false
                       return "\\end{equation}"
                    end
                  end )
   return line
end
\end{luacode}
%% Set up two LaTeX utility macros:
\newcommand\ReplaceDoubleDollarsOn{%
    \directlua{ luatexbase.add_to_callback( 
    "process_input_buffer", replace_ddollar, "replace_ddollar" )}}
\newcommand\ReplaceDoubleDollarsOff{%
    \directlua{ luatexbase.remove_from_callback( 
    "process_input_buffer", "replace_ddollar" )}}
\ReplaceDoubleDollarsOn % Switch Lua function _on_ by default

\usepackage{url}  % just for this example

\begin{document}
$$
E = mc^2
$$ 

$$a^2+b^2=c^2$$ $$d^2+e^2=f^2$$ % Aside: I do not endorse this coding style!

$$
x = 3\alpha^2 + \beta = \int f\, d\mu.
$$

% Switch the Lua function off
\ReplaceDoubleDollarsOff  

\url{A_URL_string_with_a_$$_and_$$$$_and_another_$$}

% Switch the Lua function back on
\ReplaceDoubleDollarsOn 

$$ e^{i\pi}-1=0 $$

$$
1+1=2
$$ 
\end{document}

答案2

或者使用一个简单的 perl 脚本:

cat yourfile | perl -p0e 's/\$\$(.*?)\$\$/\\begin{equation}\1\\end{equation}/gs'

这会将您的所有$$“环境”转变为方程式。

您可以使用附加参数-iyourfile(作为最后一个)让 perl 替换一个文件。 g使此替换成为全局的,s使.匹配也变成新行。

相关内容