2012-03-13 8 views
8

Estoy tratando de hacer Tab finalización del trabajo con RefTeX. Al escribir C-c [ y seleccionando el tipo de referencia que tengo, aparece un aviso en el minibúfer. Cuando sé el comienzo de la clave del babero que quiero ingresar, digamos por ejemplo Campbell2006, me gustaría escribir CampTab y obtener Campbell2006 [única conclusión].Configuración de la completación de RefTeX Tab en emacs

He logrado configurarlo para algunos documentos, pero no entiendo exactamente por qué funciona para ellos y para otros. Me he dado cuenta de que para los documentos que tienen adecuada Tab> finalización, se añade la siguiente línea al archivo name_of_tex_file.el creado en una subcarpeta auto:

(TeX-add-style-hook "name_of_tex_file" 
(lambda() 
(LaTeX-add-bibliographies 
"absolute_path_to_bib"))) 

Creo que he obtenido estos resultados mediante la adición de %%% reftex-default-bibliography: absolute_path_to_bib al final de mis archivos, pero esto es una especie de molestia, especialmente cuando edito el mismo archivo en varias computadoras.

Tenga en cuenta que RefTeX está funcionando porque cuando escribo C-C [CampRet, consigo una lista (en algún momento un poco extraño) con la entrada Campbell2006.

He intentado establecer las variables de entorno% BIBINPUTS% sin éxito. Añadiendo (setq reftex-bibpath-environment-variables '("c:/path_to_bib_file/")) parecía necesario para el C-c [CampRet método para trabajar. Tiene de alguna manera los mismos defectos que agregar un %%% reftex-default-bibliography: al final del archivo y no proporcionó el Tab finalización.

He intentado varias combinaciones de /, //, \\ y \ como separadores de archivos al especificar los archivos, pero no sé exactamente lo que debo utilizar (estoy usando emacs en un ambiente de ventanas). El problema podría ser tan simple como eso, pero como hay muchos parámetros que probar, no puedo determinar dónde está el problema.

¿Cuál es el método paso a paso para que RefTeX funcione sin problemas con la bibliografía, incluida la Tab finalización?

EDIT: terminación es posible de acuerdo con la entrada manual reftex sobre el comando reftex-citation:

El expresión regular utiliza una sintaxis expandido: &&' is interpreted as and. Thus, AAAA & & bbb 'concuerda con entradas que contienen tanto aaaa' and bbb'. Al ingresar la expresión regular, la finalización de las teclas de citación de know [sic] es posible. `= 'es una buena expresión regular para hacer coincidir todas las entradas en todos los archivos.

no proporciona una guía precisa sobre cómo hacerlo funcionar.

Kindahero sugiere establecer una lista de entradas del babero y usar el comando completing-read.Esto suena sensato, sin embargo me gustaría generar esta lista automáticamente y parece factible porque funciona con algunos de mis documentos.

+0

Solo una pista. para poder completar el 'TAB', necesitas hacer una lista con todas tus entradas del babero para hacer uso de 'completing-read' que de hecho está vinculado a' TAB' – kindahero

+0

Como solución alternativa, puedes escribir '= ', luego en la búsqueda del búfer de selección para lo que necesita. – xuhdev

Respuesta

4

La documentación de reftex-citation es un poco confusa. Promete la finalización de las claves de citas conocidas, pero creo que "conocido" se refiere a las claves que se han utilizado anteriormente en esta sesión en lugar de todas las claves en la bibliografía adecuada. Puede utilizar el comando LaTeX-add-all-bibitems-from-bibtex se define a continuación para cargar todas las claves en su bibliografía:

(defun get-bibtex-keys (file) 
    (with-current-buffer (find-file-noselect file) 
    (mapcar 'car (bibtex-parse-keys)))) 

(defun LaTeX-add-all-bibitems-from-bibtex() 
    (interactive) 
    (mapc 'LaTeX-add-bibitems 
     (apply 'append 
       (mapcar 'get-bibtex-keys (reftex-get-bibfile-list))))) 

Sugerencias sobre ganchos adecuados para que esto suceda de forma automática son bienvenidos.

Cuestiones relacionadas