![Emacs——专为正则表达式突出显示而设计的“精美”LaTeX 页脚](https://linux22.com/image/285847/Emacs%E2%80%94%E2%80%94%E4%B8%93%E4%B8%BA%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%AA%81%E5%87%BA%E6%98%BE%E7%A4%BA%E8%80%8C%E8%AE%BE%E8%AE%A1%E7%9A%84%E2%80%9C%E7%B2%BE%E7%BE%8E%E2%80%9DLaTeX%20%E9%A1%B5%E8%84%9A.png)
我需要一些帮助,以便修改我当前的页脚设置,以便更轻松地创建可靠的正则表达式以进行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{}
因为标题会自动添加到那里。
当然,这个基本方案还有很多改进之处:
这使用了自己的宏
\settitle{}
。但“插入”现有的 LaTeX 命令几乎肯定更有意义title{}
,请参见为什么 \maketitle 会改变 \@title 的可用性?这不会进行任何错误检查,例如确保文本可以位于框中。
如果您正在编写一种样式或类别,那么诸如此类的名称
\mytitle
就会很愚蠢,因为它们很容易被无意中使用。
等等。