区域上的 Auctex 命令 - 向后搜索导致 region.tex 而不是 main.tex

区域上的 Auctex 命令 - 向后搜索导致 region.tex 而不是 main.tex

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!"))))

相关内容