使用 emacs 局部变量指定命令中使用的路径
我使用 emacs+AucTeX 来编写 LaTeX 文件。 .tex
文件的底部是一些局部变量:
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "master-file"
%%% End:
这些变量是在我创建文件时由 AucTeX 添加的。
我想要做的是编写一个 lisp 函数,该函数将执行以下操作:
- 检查特定局部变量是否存在(将其称为
pdf-copy-path
) - 如果此变量存在,则检查它是否是格式正确的 (unix) 目录路径
- 如果是,请将输出 pdf 复制到该文件夹
输出 pdf 与当前 .tex
文件同名,但使用 .pdf
扩展。
我的 lisp-fu 无法做到这一点,而且我不知道如何让函数检查当前文件中的局部变量。任何指示表示赞赏。
我在这个问题上选择了 SO 而不是 SU,因为这似乎是一个关于 lisp 编程的问题。
I use emacs+AucTeX to write LaTeX files. At the bottom of the .tex
file are some local variables:
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "master-file"
%%% End:
These are added by AucTeX when I create the file.
What I'd like to do is write a lisp function that will do the following:
- Check whether a particular local variable exists (call it
pdf-copy-path
) - If this variable exists check whether it is a well formed (unix) directory path
- If it is, copy the output pdf to that folder
The output pdf has the same name as the current .tex
file, but with the .pdf
extension.
My lisp-fu isn't up to this, and I don't know how to have a function check the current file for a local variable. Any pointers appreciated.
I chose SO for this question rather than SU, because it seems to be a question about lisp programming more than anything else.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不知道您是否真的想要一个完整的解决方案,或者宁愿自己探索更多,但这里有一些应该有所帮助的事情。如果您遇到困难,请再次发帖:
变量
file-local-variables-alist
保存您要查找的值。您需要使用assoc
函数之一从 alist 中获取 pdf-copy-path 的值。您可以使用
file-exists-p
函数检查文件是否存在,以及使用file-attributes
(第一个元素)检查它是否是一个目录。然后使用
复制文件
。(FWIW,我认为输出的 PDF 输出将匹配 TeX-master 而不是当前文件。)
[编辑 2011-03-24 - 提供代码]
这应该适用于带有局部变量块的 TeX 文件,例如
注意周围的双引号TeX-master 值和 pdf-copy-path 值。 TeX-master 也可以是
t
I don't know if you really want a complete solution, or would rather explore more yourself, but here are a few things that should help. Post again if you're stuck:
The variable
file-local-variables-alist
holds the values you're looking for. You'd want to use one of theassoc
functions to get the value of pdf-copy-path out of the alist.You can check whether a file exists with the
file-exists-p
function, and if it's a directory withfile-attributes
(the first element).Then use
copy-file
.(FWIW, I think the output PDF output will match TeX-master and not the current file.)
[Edited 2011-03-24 - provide code]
this should work on TeX files with a local variables block like
Note the double quotes around the TeX-master value and the pdf-copy-path value. TeX-master can also be
t