如何使用 outline-minor-mode 隐藏 AUCTeX 中的一些考试类练习

如何使用 outline-minor-mode 隐藏 AUCTeX 中的一些考试类练习

我使用examAUCTeX 中的文档类为我的学生编写考试。我想使用提供的功能outline-minor-mode隐藏我已完成的所有练习,仅显示我正在编辑的练习。考试类中有\question用于编写练习的宏。以下是示例:

\documentclass{exam}
\begin{document}
\begin{questions}
\question % exercise N°1
     statement of exercise 1
\question % exercise N°2
    statement of exercise 2
\question % exercise N° 3
     statement of exercise 3
\end {questions}
\end{document}

例如,当我编辑练习 2 的语句时,我想隐藏练习 1 和 3 的语句!所以我用这样的 \question变量添加到 AUCTeX 的标题列表中: 但并没有像预期的那样被识别为标题!TeX-outline-extraM-x (setq TeX-outline-extra '(("\question" 1)))\question

答案1

这个答案是由@Tyler 在这篇文章中给出的

http://emacs.stackexchange.com/questions/27829/how-to-use-outline-minor-mode-to-hide-some-exam-class-exercises-in-auctex/27880#27880

您没有正确转义“\question”的正则表达式。它应该是:

"\\\\question\\b"

这是一个字符串,为了对字符串中的单个反斜杠进行编码,需要用其自己的反斜杠进行转义。为了在正则表达式中使用文字反斜杠,必须用另一个反斜杠进行转义。因此,要使正则表达式匹配\字符串中的单个文字,您需要使用\\\\

\\b字符串末尾的 与单词的结尾匹配,即正则表达式\b

\question这仅在出现在行首时才有效。这就是@arashesbati 添加的原因[ \t]*,这使得正则表达式可以匹配\question行上任意数量的制表符或空格。

将大纲级别设置为 1 似乎有点高,我认为你最终可能会将问题下方的所有内容(包括后续部分)折叠到问题中。因此,使用类似以下内容可能更有用:

("[ \t]*\\\\question\\b" 4)

最后,看起来 AucTex 只在会话开始时读取它,并且后​​续更改直到您重新启动才会生效。因此,进行此添加的最佳方式可能是通过M-x customize-variable TeX-outline-extra。这样,您就知道下次启动 Emacs 时在加载 AucTex 之前将更改变量。在我的例子中,此变量定义为:

'(("[   ]*\\\\question\\b" 4) ("[   ]*\\\\\\(bib\\)?item\\b" 7) ("\\\\bibliography\\b" 2))

相关内容