emacs latex

Emacs+Synctex+Skim: ¿Cómo configurar correctamente la sincronización?



latex (2)

Cuando presiona Cc Cv (que ejecuta TeX-view ) debería abrir Skim con la barra en la línea actual. Esto es lo que configuró con el TeX-output-view-style . No puede obtener ese comportamiento de latexmk -pvc ya que no sabe en qué línea está. Todo lo que latexmk sabe es que el archivo cambió. Para realizar una búsqueda hacia adelante, necesita ejecutar TeX-view .

Puede enlazar CMD + Mayús + clic para ejecutar TeX-view agregando

(define-key LaTeX-mode-map [M-S-mouse-1] ''TeX-view)

o posiblemente

(define-key LaTeX-mode-map [s-S-mouse-1] ''TeX-view)

a su TeX-mode-hook . Depende de la configuración que necesite, pero puede averiguarlo presionando Ch Ck y luego CMD + Mayús + clic. Por supuesto que agregar ambos no debería causar un problema.

Estoy trabajando con GNU Emacs 23.3 (9.0) en Mac OS X 10.7.2. Me gustaría usar synctex para saltar entre archivos .tex y .pdf. Aunque hay muchos enfoques diferentes en la web, ninguno funcionó correctamente (probé 8 enfoques diferentes ...). Finalmente, terminé con el enfoque bastante simple descrito aquí: http://sourceforge.net/apps/mediawiki/skim-app/index.php?title=TeX_and_PDF_Synchronization

Así que mi .emacs contiene:

''(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)

Por supuesto, también configuré Skim (Preferencias -> Sincronizar -> marcado "Comprobar cambios de archivo" y elegí Predefinido: Emacs con comando emacsclient y argumentos --no-wait +% línea "% archivo")

Como puede ver, incluí la opción -b para mostrar línea. Puedo llamar a displayline desde el terminal y abre el .pdf y muestra la línea correspondiente con una barra amarilla / resaltada. Aún así, no se muestra nada en la línea actual si compilo el documento con latexmk -pvc -pdf desde un shell dentro de Emacs.app.

Pregunta 1: ¿Cómo puedo hacer que esto funcione? ¿Cómo puedo mostrar la línea actual?

Pregunta 2: ¿Es posible tener una búsqueda hacia adelante "adecuada" haciendo clic en .tex y saltando a la línea correspondiente en el documento .pdf? ¿Cómo puedo "hacer clic" en emacs? El CMD + shift estándar + clic no funciona en emacs.

También probé enfoques usando ...

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

... pero nada cambia.

Puedo hacer CMD + shift + clic en el .pdf y saltar al .tex, para que funcione.

Las únicas direcciones que no he mirado son:

  1. ¿Es este un problema de latexmk? Muy probablemente no, ya que latexmk muestra explícitamente pdflatex pdflatex -interaction=nonstopmode -synctex=1 para que se reconozca synctex

  2. ¿Es una configuración incorrecta de preferencias de skim? Tal vez tengo que ajustar los argumentos para emacsclient allí (?)

Solución

De hecho latexmk es el problema. Finalmente me di cuenta de la siguiente configuración:

~ / .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'';

Esto permite perfectamente compilar con latexmk por defecto en Cc Cc y Cc Cv abre Skim en la línea actual que está muy bien resaltada. Con CMD + shift + clic en el .pdf, se puede saltar al párrafo correspondiente en el archivo .tex (gracias al server-start ).


Para habilitar la función de clic de la sincronización, agregué:

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

a mi archivo .emacs .

NOTA: asegúrese de estar en modo PDF (uso (setq TeX-PDF-mode t) ).