我auctex
可以仅在特定区域运行命令以加快编译速度。这很有效,但是如果我使用向后搜索从跳转.pdf
到.tex
源代码,它会打开临时_region_.tex
文件而不是我的真实 tex 文件chapter2.tex
。
我确实在互联网和 auctex 文档中进行了搜索,但没有找到有关如何正确设置的提示。
关于配置的一些提示
包含章节的 LaTeX 主文件
我正在使用一个主文件(我们称之为主文件main.tex
,然后为每一章包含一个源文件,例如
\include{chapter2}
地区.tex 文件和相应的日志文件
我的_region_.tex
文件后面紧接着以下行\begin{document)
\message{ !name(chapter2.tex) !offset(927) }
我认为它应该用于这个目的。
该_region_.log
文件包含一行,它指的是主文件,而不是章节:
**\input _region_.tex
(./_region_.tex !name(main.tex)
PDF 查看器同步设置
在(pdf 查看器)的首选项中Skim.app
,我使用以下配置:
- 命令:
emascsclient
- 参数:
--no-wait +%line "%file"
系统和软件版本
AUCTeX 11.88
我使用的是 MacOS X 10.6 和TeXLive 2014。
我的 pdf 查看器是Skim.app
,我的源编辑器是Aquamacs.app
(版本 3.2)
(我已更新至使用 AUCTeX 11.88 的 Aquamacs 3.2,但仍然遇到同样的问题)
答案1
emacs
我最终通过配置(aquamacs)找到了解决方案:
来源:http://article.gmane.org/gmane.emacs.auctex.general/4285
(defadvice server-goto-line-column (after server-visit-region.tex
(line-col)
activate)
"When visiting _region_.tex from an external
source (e.g. inverse search), go to the original file so that any
changes made won't be lost."
(when (string-match "_region_.tex\\'" (buffer-file-name))
(if (save-excursion ;; in case we don't find the other file we at least want the right line...
(re-search-backward
"\message{ !name(\\([^)]+\\))\\(?: !offset(\\([-0-9]+\\))\\)?\\s *}" nil nil))
(let ((file-name (match-string 1))
(offset (match-string 2))
(line (car (ad-get-arg 0)))
(col (cdr (ad-get-arg 0))))
(if offset (setq line (+ line (string-to-number offset))))
(find-file file-name nil)
;; For some reason this doesn't actually go to the offset
;; line. It's probably because of how advice works.
(server-goto-line-column (cons line col))
(message "Moved from _region_.tex to line %s of %s." line file-name)
(forward-line offset))
;; else
(message "This is _region_.tex, but I couldn't find the original file!"))))