【问题标题】:sed replacing tex short-hand $$ with latex short-hand \( \)sed 用乳胶简写 \( \) 替换 tex 简写 $$
【发布时间】:2013-01-30 09:40:48
【问题描述】:

我目前在编辑manuscript.tex 文件时遇到问题。到目前为止,我一直使用文本简写 $$;但是,出现了一些问题,需要我将所有 $...$ 替换为 \( \)

我认为带有替换操作的“sed”应该是完成任务的正确工具。但是,我不擅长或不熟悉“sed”和正则表达式。因此,我需要提示和帮助。

假设输入文件名为manuscript.tex。我需要“sed”将$ e=mc^2 $ 替换为\( e=mc^2 \)。我该怎么做?

【问题讨论】:

    标签: bash sed latex


    【解决方案1】:

    如果美元符号之间没有换行符,您可以尝试类似

    sed -e 's/\$\([^$]\+\)\$/\\(\1\\)/g' manuscript.tex > manuscript2.tex
    

    【讨论】:

    • 嗨@choroba,感谢您提供正确的解决方案。试着解释一下我对你的正则表达式的理解,如果我错了,请纠正我。 sed 替换的模式是 's/pattern1/pattern2/g'。这里的模式 1 是 \$([^$]\+)\$,模式 2 是 \(\1\)。在模式 1 中,latex 中有两个 \$ 用于打开和关闭数学环境; [^$]\+ 用于从 \$ 之间的字符串的开头到结尾捕获。在模式 2 中,\( 和 \) 是两个替换。我不明白的是模式 1 中的 ( ) 部分和模式 2 中的 \1。为什么需要这些符号?
    • @user24265:\(...\) 记住稍后要与\1 一起插入的子字符串。一般\n对应第n次捕获\(
    【解决方案2】:

    使用 sed 的其他方式

    sed -re 's/(.*)\$(.*)\$(.*)/\\(\2\\)/g' temp.txt

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-18
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      相关资源
      最近更新 更多