[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Trigger Tex file compilation with latexmk automatically when its con
From: |
Hongyi Zhao |
Subject: |
Re: Trigger Tex file compilation with latexmk automatically when its content is changed and saved. |
Date: |
Sun, 7 May 2023 09:59:44 +0800 |
On Sat, May 6, 2023 at 11:14 PM Hongyi Zhao <hongyi.zhao@gmail.com> wrote:
>
> On Sat, May 6, 2023 at 10:31 PM Ikumi Keita <ikumi@ikumi.que.jp> wrote:
> >
> > >>>>> Hongyi Zhao <hongyi.zhao@gmail.com> writes:
> > >> (1) Does "latexmk -pv FILENAME" work as expected when you issue the
> > >> command on some shell, in the directory the file is located?
> >
> > > In fact, my latexmk configuration, aka, `/home/werner/.latexmkrc` was
> > > set by me very long ago.
> >
> > > See below:
> >
> > [...]
> >
> > > It's very strange that I don't have any acroread related config in
> > > `/home/werner/.latexmkrc`, why does it complain the following:
> >
> > > sh: 1: acroread: not found
> >
> > Then it isn't an AUCTeX issue. Unfortunately, I don't know latexmk. I
> > hope someone familiar with latexmk chimes in. :-)
> >
> > If no one does, I'd recommend to ask at latexmk support commnunity.
>
> Thanks for the tip!
Now, all works smoothly. The problem reported here is caused by my
mismatching configuration of latexmk and the Emacs smart-compile
package. Here is the current working configuration:
The latexmk configuration:
werner@X10DAi:~$ grep -v '^[ ]*#' ~/.latexmkrc | awk 'NF >0'
$show_time=1;
$pdf_mode = 1;
$pdflatex = "pdflatex -shell-escape -file-line-error -halt-on-error
-interaction=nonstopmode -synctex=1 %O %S";
$bibtex = "bibtex %O %S";
$bibtex_use = 2;
$makeindex = "makeindex %O -o %D %S";
$silence_logfile_warnings = 1;
add_cus_dep( 'acn', 'acr', 0, 'makeglossaries' );
add_cus_dep( 'glo', 'gls', 0, 'makeglossaries' );
$clean_ext .= " acr acn alg glo gls glg";
sub makeglossaries {
my ($base_name, $path) = fileparse( $_[0] );
pushd $path;
my $return = system "makeglossaries", $base_name;
popd;
return $return;
}
add_cus_dep( 'svg', 'pdf', 0, 'makesvg2pdf' );
sub makesvg2pdf {
system( "inkscape \"$_[0].svg\" --export-pdf=\"$_[0].pdf\"" );
}
$pdf_previewer = 'evince %O %S';
The Emacs init.el configuration:
(defvar hz/AUCTeX-process nil)
(use-package smart-compile
:init
(declare-function smart-compile-string "smart-compile")
(defun run-latexmk ()
(when (string-match ".tex$" (buffer-file-name))
(unless (and (processp hz/AUCTeX-process)
(eq (process-status hz/AUCTeX-process) 'run))
(let ((buf (get-buffer-create "*Background TeX proccess*")))
(with-current-buffer buf (erase-buffer)) ;; flush previous log
(setq hz/AUCTeX-process
(start-process-shell-command
"Background TeX" buf
;; use an external application as the previewer
(smart-compile-string "latexmk -pv %f")
;; use pdf-tools
;; (smart-compile-string "latexmk %f")
))))))
(define-minor-mode AutoTeX-mode
"Mode for compiling latex sources and creating PDFs after saving."
:global nil
:lighter " Auto"
(if AutoTeX-mode
(add-hook 'after-save-hook 'run-latexmk t t)
(remove-hook 'after-save-hook 'run-latexmk t)))
:hook (LaTeX-mode . (lambda () (AutoTeX-mode 1))))
N.B.: In fact, we discussed the similar question a long time ago on
this list [1-2].
[1] https://lists.gnu.org/archive/html/auctex/2021-07/msg00013.html
[2] https://tam5917.hatenablog.com/entry/2021/04/10/134230
Regards,
Zhao