我通过电子邮件与我的合著者沟通。这次,我是作者,所以我向他们发送了文档的 PDF 文件,他们向我发送了更正。然后我想实施这些更正。它们的形式如下:
在公式 (3.2) 中等等
在定理 C 中等等
所以现在,我想要在一个单独的窗口中显示方程列表。我会点击列表中的相应条目,然后它会将我带到我文档的 PDF 中的方程(如果这很重要,可以使用 Okular),然后我就可以在文件中进行适当的更改.tex
。
目前,当我读到“在公式 (3.2) 中更改...”时,我需要滚动到公式 (3.2),进行小幅更改,然后查看下一个错误。像这样的小错误大约有一百个。
.tex
为了使系统完美,如果当我在文件中进行更改并运行时方程列表能够自动更新,那就太好了pdflatex
。
显然,我希望在类似定理的环境中拥有类似的东西。
答案1
首先,我们需要知道您使用什么来创建LaTeX
文档。我只能为您提供特定于 Emacs 的建议,但也许我会很幸运,您使用的就是这种类型的文档。
这样,您就可以.tex
通过按住shift
并左键单击文档中的公式来跳转到文档中的行pdf
。
打开 Okular 并转到设置-配置 Okular。将打开一个新窗口,在底部,您将看到编辑器。将有一个下拉菜单供您选择编辑器。就我而言,我会选择 Emacs。
由于您使用的是 Okular,我猜您使用的是 Linux 系统。您需要将软件设置为以服务器模式打开。再次,我将使用 Emacs 作为示例。在我的 中~/.bashrc
,我有以下内容:
# Emacs-server mode and non-GUI alias
alias emacs='emacsclient -t --alternate-editor='
这将以服务器模式启动 Emacs,并且我从终端而不是 GUI 运行 Emacs。
接下来,您需要设置 synctex。我使用LaTeXMK
,所以我将使用它作为您需要执行的操作的示例。在我的 中~/.emacs
,我有
;; ============ Latexmk setup ==============
(defun run-latexmk ()
(interactive)
(let ((TeX-save-query nil)
(TeX-process-asynchronous nil)
(master-file (TeX-master-file)))
(TeX-save-document "")
(TeX-run-TeX "latexmk"
(TeX-command-expand "latexmk -pdflatex='pdflatex -file-line-error
-synctex=1' -pdf %O %S" 'TeX-master-file)
master-file))
(if (plist-get TeX-error-report-switches (intern master-file))
(TeX-next-error t)
(progn
(demolish-tex-help)
(minibuffer-message "latexmk: done."))))
您将会看到它-synctex=1
是在编译期间设置的。
然后我必须对 Okular 和我的~/.emacs
文件中的自定义设置变量中的设置进行调整。
确定调整:
;; Set okular to open with C-c C-v view option
(defun Okular-make-url () (concat
"file://"
(expand-file-name (funcall file (TeX-output-extension) t)
(file-name-directory (TeX-master-file))
"#src:"
(TeX-current-line)
(expand-file-name (TeX-master-directory))
"./"
(TeX-current-file-name-master-relative))))
(add-hook 'LaTeX-mode-hook '(lambda ()
(add-to-list 'TeX-expand-list
'("%u" Okular-make-url))))
(setq TeX-view-program-list
'(("Okular" "okular --unique %u")))
(setq TeX-view-program-selection '((output-pdf "Okular")))
custom-set-variables
调整:
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(TeX-PDF-mode t)
'(TeX-source-correlate-method (quote synctex))
'(TeX-source-correlate-mode t)
'(TeX-source-correlate-start-server t)
'(TeX-view-program-list (quote (("Okular" "okular -unique %o#src:%n%b"))))
'(TeX-view-program-selection (quote ((output-pdf "Okular"))))
)
最后,我必须为 synctex 设置我的~./latexmkrc
文件。
$pdf_mode = 1;
$pdflatex = 'pdflatex -interaction=nonstopmode %O %S -file-line-error -synctex=1';
通过此设置,我可以单击我pdf
的文件中的任意位置并跳转到文件行,.tex
而无需滚动。
基本上,无论您使用什么编辑器,您都需要设置synctex
Okular 以使用 synctex 来实现此功能。
要回答您关于方程式列表的问题,您可以使用Emacs 附带的RefTeX
插件。同样,我不知道您使用的是哪种编辑器。如果您使用的是 Emacs,我可以用如何使用在单独的缓冲区中显示方程式来更新我的答案。然后,您可以在更改方程式时点击重新扫描。AUCTeX
RefTeX
r
这并不是您所要求的,但它可以简化您的工作量。