gpt4 book ai didi

emacs - Emacs + Synctex + Skim:如何正确设置同步? [现有方法均无法正常工作]

转载 作者:行者123 更新时间:2023-12-03 11:58:49 24 4
gpt4 key购买 nike

我正在Mac OS X 10.7.2上使用GNU Emacs 23.3(9.0)。我想使用synctex在.tex和.pdf文件之间跳转。尽管网络上有许多不同的方法,但没有一种能正常工作(我尝试了8种不同的方法...)。我最终得到了这里描述的相当简单的方法:http://sourceforge.net/apps/mediawiki/skim-app/index.php?title=TeX_and_PDF_Synchronization

所以我的.emacs包含:

'(LaTeX-command "latex -synctex=1")
(require 'tex-site)
(add-hook 'TeX-mode-hook
(lambda ()
(add-to-list 'TeX-output-view-style
'("^pdf$" "."
"/Applications/Skim.app/Contents/SharedSupport/displayline -b %n %o %b")))
)
(server-start)

当然,我也设置了Skim(首选项->同步->检查“检查文件更改”,然后选择Preset:Emacs,带有命令emacsclient和参数--no-wait +%line“%file”)

如您所见,我在displayline中加入了 -b选项。我可以从终端调用displayline,它会打开.pdf并用黄色/突出显示的条显示相应的行。但是,如果我从Emacs.app内的shell中使用 latexmk -pvc -pdf编译文档,则在当前行上什么也不显示。

问题1:如何使它正常工作/如何显示当前行?

问题2:是否可以通过单击.tex并跳到.pdf文档中的相应行来进行“适当的”正向搜索?如何在emacs中“单击”?标准CMD + Shift +单击在emacs中不起作用。

我也尝试过使用...的方法

(setq TeX-source-correlate-method 'synctex)
(add-hook 'LaTeX-mode-hook 'TeX-source-correlate-mode)

...但是没有任何变化。

我可以CMD + shift +单击.pdf并跳到.tex,这样就可以了。

我没有研究过的唯一方向是:
  • 这是Latexmk的问题吗?很有可能不是,因为latexmk显式显示pdflatex -interaction=nonstopmode -synctex=1,因此synctex被识别为
  • 脱脂首选项设置错误吗?也许我必须将参数调整为emacsclient(?)

  • 解决方案

    确实Latexmk是问题所在。我终于弄清楚了以下设置:

    〜/ .emacs
    ;; make latexmk available via C-c C-c
    ;; Note: SyncTeX is setup via ~/.latexmkrc (see below)
    (add-hook 'LaTeX-mode-hook (lambda ()
    (push
    '("latexmk" "latexmk -pdf %s" TeX-run-TeX nil t
    :help "Run latexmk on file")
    TeX-command-list)))
    (add-hook 'TeX-mode-hook '(lambda () (setq TeX-command-default "latexmk")))

    ;; use Skim as default pdf viewer
    ;; Skim's displayline is used for forward search (from .tex to .pdf)
    ;; option -b highlights the current line; option -g opens Skim in the background
    (setq TeX-view-program-selection '((output-pdf "PDF Viewer")))
    (setq TeX-view-program-list
    '(("PDF Viewer" "/Applications/Skim.app/Contents/SharedSupport/displayline -b -g %n %o %b")))

    (server-start); start emacs in server mode so that skim can talk to it

    〜/ .latexmkrc
    $pdflatex = 'pdflatex -interaction=nonstopmode -synctex=1 %O %S';
    $pdf_previewer = 'open -a skim';
    $clean_ext = 'bbl rel %R-blx.bib %R.synctex.gz';

    这完美地允许在C-c C-c上默认使用latexmk进行编译,并且C-c C-v在当前行打开Skim,这很好地突出了。使用CMD + shift +单击.pdf,然后可以跳回到.tex文件中的相应段落(由于 server-start)。

    最佳答案

    为了启用同步的点击功能,我添加了:

    (add-hook 'LaTeX-mode-hook
    (lambda () (local-set-key (kbd "<S-s-mouse-1>") #'TeX-view))
    )

    到我的 .emacs文件。

    注意:确保您处于 PDF模式(使用 (setq TeX-PDF-mode t))。

    关于emacs - Emacs + Synctex + Skim:如何正确设置同步? [现有方法均无法正常工作],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7899845/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com