Emacs——专为正则表达式突出显示而设计的“精美”LaTeX 页脚

Emacs——专为正则表达式突出显示而设计的“精美”LaTeX 页脚

我需要一些帮助,以便修改我当前的页脚设置,以便更轻松地创建可靠的正则表达式以进行font-lock突出显示。理想情况下,我希望右页脚的底线看起来像:\rfoot{Title of Document}。问题是我需要上面的一行,但我不知道如何将其分成两个不同的部分——也就是说,我想要\makebox[2in]{\hrulefill}\\全部单独。修复后,我想使用类似于以下内容的正则表达式:

\\(\\\\rfoot{\\)\\([^}]*\\)\\(}\\)

我当前的设置如下:

% BEGIN footer
\pagestyle{fancy}
  \cfoot{\vspace{-1mm} \ptm{-\thepage-} }
    \rfoot{\makebox[2in]{\hrulefill}\\ Title of Document }
% END

这会创建一个像这样的右页脚:

__________________________
         Title of Document

编辑:根据@Paul Stanley 的帮助回答,这里是修改后的字体锁定正则表达式。

(font-lock-add-keywords 'lawlist-tex-mode (list

  (list "\\(\\\\newcommand\\)\{\\(\\\\mytitle\\)\}\{\\([^}]*\\)\}"
    '(1 font-lock-keyword-face t)
    '(2 font-lock-function-name-face t)
    '(3 font-lock-warning-face t))

  (list "\\(\\\\settitle\\)\{\\([^}]*\\)\}"
    '(1 font-lock-keyword-face t)
    '(2 font-lock-warning-face t))

   ))

例子

答案1

我不确定我是否完全理解你想要实现的目的,但我认为它是这样的:您正在创建一个模板文档,并且您希望 emacs(或者可能是人类)有一个简单的方法来识别文档标题(然后在页脚中使用它)的设置位置。

如果这是正确的,那么一种方法就是做这样的事情:

\documentclass{article}
\usepackage{fancyhdr}
\usepackage{lipsum}%for demonstration purposes only
\newcommand{\settitle}[1]{\renewcommand{\mytitle}{#1}}% User interface
\newcommand{\mytitle}{Title Not Set!}% Stores the title

\pagestyle{fancy}
\rfoot{\makebox[2in]{\hrulefill}\\\mytitle}

\settitle{Reset Title}% Example of the user interface "in use"


\begin{document}
\lipsum
\end{document}

现在,您需要做的就是在 emacs/中搜索\settitle{},这是用户用来设置标题的宏。您不需要查找宏,\cfoot{}因为标题会自动添加到那里。

当然,这个基本方案还有很多改进之处:

  1. 这使用了自己的宏\settitle{}。但“插入”现有的 LaTeX 命令几乎肯定更有意义title{},请参见为什么 \maketitle 会改变 \@title 的可用性?

  2. 这不会进行任何错误检查,例如确保文本可以位于框中。

  3. 如果您正在编写一种样式或类别,那么诸如此类的名称\mytitle就会很愚蠢,因为它们很容易被无意中使用。

等等。

相关内容