代码之家  ›  专栏  ›  技术社区  ›  Jane Wayne

如何使用perl或sed之类的命令行工具替换LaTex$分隔符?

  •  2
  • Jane Wayne  · 技术社区  · 6 年前

    我有一堆Jupyter笔记本,上面有用乳胶写的方程式。我知道我可以将笔记本转换为HTML,如下所示。

    jupyter nbconvert --to html --template basic test.ipynb test.html
    

    但是,将保留LaTex标记。例如,如果我有 $y = w'x$ ,则仍会显示在输出HTML中。我想将生成的HTML放入WordPress(基本上是复制/粘贴),但是 WordPress 像这样划分乳胶 $latex y = w'x$

    如何使用 perl sed (或任何其他)转换 $y = w'x $乳胶y=w'x$ ?

    我知道我可以编写一个程序来完成这项工作,但我认为这是一种过分的做法,因为我相信这些可用的命令行工具可以做到这一点。此外,任何在Windows和Mac/Linux上都可用的工具都是一种奖励,因为我在这两种环境类型上都工作,并且不想求助于类似于*nix的环境来进行此转换(尽管Windows现在确实有Windows Linux子系统,所以我想如果它只是一个Linux工具,那么这可能没问题)。

    我试图修改此 sed公司 来自此的表达式 post (在Mac上),但它不起作用。

    sed -e ' /\$\$/{s/\$\$/{\$latex }/;:a;N;/\$\$/!ba;s/\$\$/{\$}/};s/^\(\$\)\(.*\)\(\$\)$/{\$latex }\2{\$}/' test.html
    

    意外的EOF(挂起的})

    2 回复  |  直到 6 年前
        1
  •  1
  •   Allan    6 年前

    您可以使用以下 sed 命令:

    sed -e 's/\$\([^$]*\)\$/$\\latex \1$/g'
    

    $ echo -e "abc \$y = w'x$ toto\n123 \$u = v'w$ xyz"
    abc $y = w'x$ toto
    123 $u = v'w$ xyz
    

    输出:

    echo -e "abc \$y = w'x$ toto\n123 \$u = v'w$ xyz" | sed -e 's/\$\([^$]*\)\$/$\\latex \1$/g'
    abc $\latex y = w'x$ toto
    123 $\latex u = v'w$ xyz
    

    说明:

    您使用 sed公司 在查找和替换模式下,它将替换两个 $ 通过此正则表达式的字符: \$\([^$]*\)\$ 根据此处已有内容(反向引用)并添加 \latex 在一开始。

    最后但并非最不重要的是: sed -e 's/\$\([^$]*\)\$/$latex \1$/g' sed命令执行 $latex 更换时不带 \

        2
  •  0
  •   7 Reeds    6 年前

    我不确定你的文件的整个格式可能是什么。如果我从表面上看你的例子,并假设 $ 在第1列的任何一行上

    sed -e's/^\$/$\\latex /'
    

    对我有用。但是如果要转换的字符串是 在任何地方 在文件中,事情变得更难了。