Emacs: если latexmk завершает нормально, тогда показывает pdf, иначе выдает ошибки

Может ли кто-нибудь, пожалуйста, дайте мне руку с шагом междупервый start-process ивторой start-process,второй start-process который отображает PDF-файл должен работатьonly if первый start-process отделкибез ошибок, Вероятно, есть какой-то тип успешного кода выхода, который можно обнаружить, но мне нужна помощь, пожалуйста, в этом отношении.

Я открыт для предложений относительно того, как лучше определить, является липервый start-process закончил без ошибок. Одним из методов было бы посмотреть наoutput буфер, чтобы определить, равна ли последняя строка «Процесс»process готово ". Создание файла * .pdf может занять несколькосекунд даже если это без ошибок, ивторой start-process терпит неудачу, если это начинается слишком рано. Сидеть за это не самый лучший вариант, так каквторой start-process следует прервать, еслипервый start-process не завершено правильно. Генерацияoutput Буфер также занимает пару секунд, поэтому проверка последней строки в буфере также должна подождать, покапервый start-process отделки. Однако, определение успешного кода завершения (если такая вещь существует) было бы лучше, чем поиск в выходном буфере строки, равной. , , ,

К вашему сведению: .latexmkrc$pdflatex строка кода помещает копию * .pdf обратно в рабочий каталог, а .latexmkrc$out_dir строка кода помещает все вспомогательные файлы в/tmp папка. Это необходимо, потому что Tex-Live для OSX не поддерживает$aux_dir, В результате получается чистый рабочий каталог, содержащий только файлы * .tex и * .pdf.

(defun latexmk ()
  ".latexmkrc should contain the following entries -- without the backslashes:
  $pdflatex .= ' && (cp \"%D\" \"%R.pdf\")';
  $force_mode = 1;
  $pdf_mode = 1;
  $out_dir = '/tmp';"
(interactive)
  (let* (
    (process (file-name-nondirectory buffer-file-name))
    (output (concat "*" (file-name-nondirectory buffer-file-name) "*") )
    (latexmk "/usr/local/texlive/2012/texmf-dist/scripts/latexmk/latexmk.pl")
    (arg-1 "-interaction=nonstopmode")
    (arg-2 "-file-line-error")
    (arg-3 "-synctex=1")
    (arg-4 "-r")
    (arg-5 "/Users/HOME/.0.data/.0.emacs/.latexmkrc")
    (pdf-file (concat "/tmp/" (car (split-string
      (file-name-nondirectory buffer-file-name) "\\.")) ".pdf"))
    (line (format "%d" (line-number-at-pos)))
    (skim "/Applications/Skim.app/Contents/SharedSupport/displayline") )
  (if (buffer-modified-p)
    (save-buffer))
  (start-process process output latexmk arg-1 arg-2 arg-3 arg-4 arg-5 buffer-file-name)
  ;;  (if (last line of output buffer is "Process 'process' finished")
      (start-process "displayline" nil skim "-b" line pdf-file buffer-file-name)
    (switch-to-buffer output)
  ;;  )
    ))

РЕДАКТИРОВАТЬ: Рабочее решение, основанное на концепции, изложенной Франческо в ответе ниже, доступно в соответствующей теме:https://tex.stackexchange.com/a/156617/26911

Ответы на вопрос(1)

Ваш ответ на вопрос