Si establece un método de entrada (por ejemplo, mediante M-x set-input-method
RET cyrillic-translit
RET), puede escribir caracteres cirílicos con un teclado de EE. UU .: Emacs utilizará reglas de transliteración para convertir caracteres romanos en caracteres cirílicos. Si observa cyrillic.el
, verá, por ejemplo ("f" ?ф)
, escribir, f
da ф
.
Ahora imagine que está editando un archivo LaTeX y LaTeX-mode
( AUCTeX ) habilitado. Utiliza caracteres cirílicos en el cuerpo del texto y caracteres romanos en las fórmulas. En este contexto que le gustaría f
producir f
y no ф
en modo matemático, (es decir, en $...$
, \[...\]
, \(...\)
, y en entornos de matemáticas).
Si entiendo la pregunta de cómo detectar si está dentro de un entorno matemático LaTeX? y esta respuesta es correcta, la función texmathp
puede detectar si estamos en un entorno matemático.
Mi pregunta es sobre la posibilidad de la siguiente transcripción condicional usando quail
escribir
f
daf
dentro de un entorno matemático LaTeX y enф
otros lugares.
fuente
Respuestas:
Han pasado casi 10 años desde la última vez que necesité editar un documento LaTeX en ruso, pero puedo relacionarme. :-)
De acuerdo con el Manual Emacs Lisp, cada método de entrada debe deshabilitar la traducción y conversión de claves si
overriding-local-map
está configurado.Deberíamos poder confiar en esto para deshabilitar
quail
condicionalmente.En Emacs 24.4 y posterior (usando el nuevo mecanismo de asesoramiento), agregue esto a su archivo init:
Tenga en cuenta que compruebo si el modo principal actual es
latex-mode
; Es posible que deba ajustar eso. (Tenemos que verificar el modo principal porque una vez que se carga AUCTeX estátexmathp
enlazado en todos los buffers, y no queremos meternos con los métodos de entrada solo porque hay signos de dólar en el buffer actual).En versiones anteriores de Emacs (probadas bajo Emacs 23.4.1) tenemos que usar
defadvice
:fuente
advice-add
se agregó en Emacs 24.4. Actualizaré la respuesta para incluir una versión del código que funcione con versiones anteriores de Emacs. (Te lo haré saber una vez que esté hecho).