如何用 \[...\] 替换 $$ .. $$

如何用 \[...\] 替换 $$ .. $$

可能重复:
将数学区域中经常使用的 Tex-Literals ($ 和 $$) 替换为 \( 或 \) 和 \[ 或 \]

当我开始使用 latex 时,我使用 将数学公式与连续文本分开来编写$$...$$。我已阅读文档中的建议l2tabuen

替换:$$...$$\[...\]

因为在我的项目中,这是一个由许多文件组成的大型项目,所以无法手动完成。我认为这样的 Python 脚本非常合适。也许有人解决了类似的问题。

答案1

这是一个简单的脚本,perl是我在许多场合使用过的脚本的精简版。它不会对\begin{document}行前的内容进行任何更改,然后$$交替替换\[\]放置在自己的行上。

#! /usr/bin/env perl

use warnings;
use strict;

my $indoc = 0;
my $indisplaymath = 0;
my @dsubs;
$dsubs[0] = '\\[';
$dsubs[1] = '\\]';

while (<>) {
  if (/\\begin{document}/) {
    $indoc = 1;
  }
  if ($indoc == 1) {
    while (/\s*\${2}\s*/p) {
      my $pre = '';
      my $post = '';
      if (${^PREMATCH} ne '') { $pre = "\n"; }
      $_ =~ s/\s*\${2}\s*/$pre$dsubs[$indisplaymath]\n/;
      $indisplaymath = 1 - $indisplaymath;
    }
  }
  print;
}

将其保存为脚本,例如latexdisp.pl,赋予其执行权限并以chmod +x latexdisp.pl身份运行latexdisp.pl file.tex >out.tex。最后,仔细检查输出。

例如

\documentclass[12pt]{article}
\begin{document}
Test
$$ x = \int_0^3 y(t)\, dt $$ testing
$ p/q $

$$
  e = t
$$
\end{document}

输出是

\documentclass[12pt]{article}
\begin{document}
Test
\[
x = \int_0^3 y(t)\, dt
\]
testing
$ p/q $

\[
  e = t
\]
\end{document}

修改中的字符串$dsubs[0]$dsubs[1]您可以更改替换以获得例如\begin / \end{equation*}对。记得引用反斜杠。

相关内容