简化 LaTeX 文档以满足编辑办公室的要求

简化 LaTeX 文档以满足编辑办公室的要求

我有一份使用发布者类文件 ( agutex) 准备的 LaTeX 手稿,其中我使用了四个软件包 ( 、、、) booktabs。我特别使用词汇表来表示首字母缩略词。提交后,编辑办公室回复说他们所有软件包都有问题,不允许我使用任何自定义命令。是否有任何工具可以“降级”LaTeX 文档,例如自动用适当的文本(带或不带扩展的首字母缩略词)替换每次出现的 ,对 也类似?glossariessiunitxgraphicx\glssiunitx

如果手工做的话会有点痛苦。

答案1

我使用这个脚本删除了手稿中的所有\gls\glspl出现的单词,并使用非常简单的算法用首字母缩略词替换它们。之后仍需要进行一些编辑。这个脚本既快又粗略。

#!/usr/bin/env python3.2

f_in = "manuscript.tex"
f_out = "manuscript_mod.tex"
lines = open(f_in).readlines()
acros = dict([(w[1][:-1], w[3].strip()[:-1]) for w in [line.split('{') for line in
                lines if line.startswith(r"\newacronym")]])
had = dict.fromkeys(acros, False)
with open(f_out, 'w') as fp:
    for line in lines:
        if r"\glsresetall" in line:
            had = dict.fromkeys(acros, False)
        if line.startswith("%"):
            fp.write(line)
            continue
        for m in ("gls", "glspl"):
            pl = ("s" if "pl" in m else "")
            ln = 7 if "pl" in m else 5
            while "\\" + m + "{" in line:
                print("Working on: " + line)
                strt = line.find("\\" + m + "{")
                end = line.find("}", strt)
                acr = line[strt+ln:end]
                if had[acr]:
                    line = line[:strt] + acr + pl + line[end+1:]
                else:
                    line = line[:strt] + acros[acr] + pl + " (" + acr + pl + ")" + line[end+1:]
                    had[acr] = True
        fp.write(line)

相关内容