![使用 sed 删除 latex 命令](https://linux22.com/image/443604/%E4%BD%BF%E7%94%A8%20sed%20%E5%88%A0%E9%99%A4%20latex%20%E5%91%BD%E4%BB%A4.png)
我需要从乳胶文件的某个部分删除索引条目,例如:
\index[lugares]{London}
或者
\index[lugares]{London|see{Londinium}}
我尝试过这个:
sed 's/\index[^)]*}//g' apendice.txt > apendice2.txt
但它留下了第一个反斜杠和更长的条目,例如:
\index[lugares]{Oropesa (Oropesa del Mar)}
答案1
就像 @Werner 在评论中建议的那样,您可以存储\index
宏的定义,暂时将其重新定义为不执行任何操作,然后稍后恢复,如以下代码所示。然后,您无需使用 从代码中删除宏sed
。
(类似地,您可以重新定义停用和重新激活宏\index
本身的宏。)
\documentclass[12pt]{article}
\usepackage{imakeidx}
\makeindex[name=lugares]
\newcommand{\ignoreindexon}{%
\let\oldIndex\index%
\renewcommand{\index}[2][]{}%
}
\newcommand{\ignoreindexoff}{
\renewcommand{\index}[2][]{\oldIndex[##1]{##2}}%
}
\usepackage{lipsum}
\begin{document}
\index[lugares]{London}
\lipsum[1]
\ignoreindexon
\index[lugares]{London|see{Londinium}}
\ignoreindexoff
\lipsum[2]
\index[lugares]{Oropesa (Oropesa del Mar)}
\printindex[lugares]
\end{document}
索引的输出: