使用 sed 删除 latex 命令

使用 sed 删除 latex 命令

我需要从乳胶文件的某个部分删除索引条目,例如: \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}

索引的输出:

在此处输入图片描述

相关内容