myfile.tex

myfile.tex

请大家帮我写一个脚本,把texstudio里的所有数学公式$$...$$都替换成\ [...] 。谢谢!

答案1

以下几种方法或许可以帮助您入门。

我们将从以下文件开始,例如myfile.tex

myfile.tex

before text $$a^2+b^2=4$$ and $$c^2$$

$$
d^2+e^2 = f^2
$$
and also $$ g^2
$$ and some inline math: $h^2$

在以下每个命令中,输出为:

output.tex

before text \[a^2+b^2=4\] and \[c^2\]

\[
d^2+e^2 = f^2
\]
and also \[ g^2
\] and some inline math: $h^2$

选项 1:perl 单行代码

perl -p0 -e 's/\$\$(.*?)\$\$/\\\[$1\\\]/sg' myfile.tex > output.tex

https://perldoc.perl.org/perlrun.html例如,有关 perl 开关的详细信息。

选项 2:使用 perl 脚本

使用以下脚本和命令

perl replace.pl myfile.tex > output.tex

replace.pl

#!/usr/bin/env perl

use strict;
use warnings;

# read the file into the Document body
my @lines;
my $fileName = $ARGV[0];

# if the file exists, read it into an array
if(-e $fileName){
    open(MAINFILE, $fileName) or die "Could not open input file, $fileName";
    push(@lines,$_) while(<MAINFILE>);
    close(MAINFILE);
} 

# join the lines up
my $body = join("",@lines);

# make the substitution
$body =~ s/\$\$
           (.*?)
           \$\$/\\\[$1\\\]/sgx;

# output the body
print $body;

exit(0);

选项 3:使用latexindent

使用latexindent它应该作为您的LaTeX发行版的一部分提供,您可以使用以下 YAML 设置文件:

Anh.yaml

replacements:
  -
    substitution: |-
     s/\$\$
       (.*?)
       \$\$/\\\[$1\\\]/sgx

然后调用它

latexindent.pl -rr -l=Anh.yaml myfile.tex -o=output.tex

相关内容