¿Es posible tener un ajuste de línea como estándar pero truncar algunas líneas en un búfer al mismo tiempo?


8

Estoy trabajando con grandes tablas de LaTeX en AucTEX y sería útil mostrarlas en líneas truncadas, como aquí:

ingrese la descripción de la imagen aquí

Las marcas rojas son los caracteres "&" que separan las columnas de la tabla. En el caso de tablas con muchas columnas, el código fuente de látex para una fila de tabla es más largo que el emacsancho del marco y, por lo tanto, se incluirá de forma predeterminada en más de una línea. Aun así align-current, esto hará que el código fuente de la tabla sea muy difícil de leer y editar, así que

  • para las tablas, preferiría que las líneas del código fuente se truncaran (obligándome a desplazarme horizontalmente)
  • mientras que para todas las demás latexfuentes, preferiría word wrapque se ajuste al ancho del marco

Sin embargo, para el texto real en mi documento LaTeX, preferiría tener la word-wrapconfiguración normal .

Pregunta:

¿Es posible usar word-wrapcomo estándar Emacsy todavía tener algunos entornos de látex en el mismo búfer table, longtabley se sidewaystablemuestra truncated al mismo tiempo?

También para algunos otros entornos como equation, pycodeo el tikzpicturetruncamiento parece ser más apropiado. Por lo tanto, puede ser una buena idea poder definir una lista de entornos que no se envuelven sino que se truncan.

El ajuste debe ser suave (es decir, el texto se ajusta a la columna de relleno en el búfer, pero eso no se refleja en el archivo) y el ajuste de una línea con sangría debe seguir la sangría de la línea.

Las soluciones también deberían funcionar para emacs pero también para Aquamacs 2.5.

Hay una publicación de blog que sugiere tener una solución (parcial), pero no encontré la implementación: http://endlessparentheses.com/longlines-mode-in-latex.html


3
Esa imagen es ilegible. Describa con texto exactamente lo que quiere decir: "como aquí" no es suficiente en este caso.
Dibujó

1
No creo que Emacs te permita (setq word-wrap t) y (setq truncate-lines t)en el mismo búfer. Si desea word-wrapactivo, lo mejor que probablemente podrá lograr es colocar una superposición invisible sobre el texto que desea truncar, factible, pero no trivial, el código para esto requeriría usar vertical-motiondespués de cada comando con eliminación / movimiento / colocación de superposiciones.
ley

1
@lawlist: gracias, esperaba que fuera posible definir truncate-linestal vez solo para ciertas partes de un texto (ciertos entornos en LaTeX), pero veo que esto puede ser difícil de lograr. Parece que tendré que aprender a alternar word wrap/ truncaterápidamente. :)
Mayormente inofensivo

3
@ Martin Puede vincular una clave toggle-truncate-lines.
Kaushal Modi

2
@ Martin Es posible hacer lo que pides. Tendrás que hacer algo de piratería longlines-mode. Ver esta publicación para un ejemplo. Escribiré una respuesta completa más tarde si tengo tiempo.
Malabarba

Respuestas:


0

Depende exactamente de lo que quieras hacer.

En los comentarios, Malabarba enlaza a una publicación de blog que puede mostrar el camino. Sin embargo, creo que este enfoque se basa en modificar (mediante programación) el texto del búfer. Si eso te funciona, ¡genial!

Si desea dejar el texto sin modificar, creo que no tiene suerte.

Para problemas como este, generalmente comienzo leyendo la sección del manual de elisp en la propiedad "display". Describe las propiedades que se pueden aplicar a los caracteres en el búfer para afectar su visualización.

Al leer esto, no vi nada que controle si una línea está ajustada o no, solo cómo mostrar la sangría y eso cuando ocurre el ajuste.

Por el momento, creo que la respuesta es "no". Recientemente se ha hablado en emacs-devel sobre la adición de funciones de ajuste para volver a mostrar, por lo que tal vez haya alguna esperanza para el futuro.


1
Estoy de acuerdo en que usar una plantilla de modificación del búfer como punto de partida (es decir, modo de palangre) es el método menos preferido. Sin embargo, estoy respetuosamente en desacuerdo con la idea de que el póster original podría no tener suerte. Una superposición con una 'invisible to una 'display ""propiedad no modifica el texto del búfer y esa superposición puede truncar visualmente cualquier línea del búfer, esto se puede hacer selectivamente. En otras palabras, word-wrappermanece activo mientras que el truncamiento dirigido se puede hacer con superposiciones.
abogados

1
Bueno ... entonces, creo que otra forma de hacerlo podría ser "rellenar" el texto marcando algunos espacios con una propiedad de visualización de sustitución de cadena que contiene una nueva línea. Esto parece envolver, tal vez. Sin embargo, esto parece tan hostil como modificar el texto para fines de edición, ya que la pantalla será diferente de lo que uno ve. También necesitaría un código especial para seguir llenando hasta la fecha, supongo. Pero ... sí, tal vez hay una manera.
Tom Tromey
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.