单独的 pdf 中的方程列表

单独的 pdf 中的方程列表

我通过电子邮件与我的合著者沟通。这次,我是作者,所以我向他们发送了文档的 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而无需滚动。

基本上,无论您使用什么编辑器,您都需要设置synctexOkular 以使用 synctex 来实现此功能。

要回答您关于方程式列表的问题,您可以使用Emacs 附带的RefTeX插件。同样,我不知道您使用的是哪种编辑器。如果您使用的是 Emacs,我可以用如何使用在单独的缓冲区中显示方程式来更新我的答案。然后,您可以在更改方程式时点击重新扫描。AUCTeXRefTeXr

这并不是您所要求的,但它可以简化您的工作量。

相关内容