È possibile disporre di un ritorno a capo standard ma troncare contemporaneamente alcune righe in un buffer?


8

Sto lavorando con grandi tabelle LaTeX in AucTEX e sarebbe utile visualizzarle in linee troncate, come qui:

inserisci qui la descrizione dell'immagine

I segni rossi sono i caratteri "&" che separano le colonne della tabella. Nel caso di tabelle con più colonne, il codice sorgente in lattice per una riga di tabella è più lungo della emacslarghezza del frame e pertanto verrà automaticamente inserito in più di una riga. Anche con align-currentquesto, questo renderà il codice sorgente della tabella molto difficile da leggere e modificare, quindi

  • per le tabelle preferirei troncare le righe del codice sorgente (costringendomi a scorrere in orizzontale)
  • mentre per tutte le altre latexfonti, preferirei word wrapadattarlo alla larghezza della cornice

Tuttavia, per il testo reale nel mio documento LaTeX preferirei avere le word-wrapimpostazioni normali .

Domanda:

E 'possibile utilizzare word-wrapcome standard in Emacse hanno ancora alcuni ambienti lattice nello stesso tampone come table, longtablee sidewaystablemostrato truncated allo stesso tempo?

Anche per alcuni altri ambienti come equation, pycodeo il tikzpicturetroncamento sembra essere più appropriato. Quindi potrebbe essere una buona idea essere in grado di definire un elenco di ambienti che non vengono avvolti ma troncati.

Il wrapping dovrebbe essere soft wrapping (ovvero, il testo viene spostato nella colonna di riempimento nel buffer, ma ciò non si riflette nel file) e il wrapping di una riga rientrata dovrebbe seguire il rientro della riga.

Le soluzioni dovrebbero funzionare anche per emacs ma anche per Aquamacs 2.5.

C'è un post sul blog che suggerisce di avere una soluzione (parziale), ma non ho trovato l'implementazione: http://endlessparentheses.com/longlines-mode-in-latex.html


3
Quell'immagine è illeggibile. Descrivi con il testo esattamente cosa intendi: "come qui" non lo taglia, in questo caso.
Estratto il

1
Non credo che Emacs ti lascerà avere (setq word-wrap t) e (setq truncate-lines t)nello stesso buffer. Se vuoi essere word-wrapattivo, probabilmente il meglio che sarai in grado di ottenere è posizionare un overlay invisibile sul testo che vuoi troncare - fattibile, ma non banale - il codice per questo richiederebbe l'uso vertical-motiondopo ogni comando con rimozione / movimento / posizionamento di sovrapposizioni.
elenco delle leggi

1
@lawlist: grazie, speravo che potesse essere possibile definire truncate-linesforse solo per alcune parti di un testo (alcuni ambienti in LaTeX) ma vedo che questo potrebbe essere difficile da ottenere. Sembra che dovrò imparare come attivare word wrap/ disattivare truncaterapidamente. :)
MostlyHarmless

3
@Martin È possibile associare una chiave a toggle-truncate-lines.
Kaushal Modi,

2
@Martin È possibile fare quello che stai chiedendo. Dovrai fare degli hack su longlines-mode. Vedi questo post per un esempio. Scriverò una risposta completa più tardi se ho tempo.
Malabarba,

Risposte:


0

Dipende esattamente da cosa vuoi fare.

Nei commenti, Malabarba si collega a un post sul blog che può mostrare la strada. Tuttavia, penso che questo approccio si basi sulla (programmaticamente) modifica del testo del buffer. Se questo funziona per te - fantastico!

Se vuoi lasciare il testo non modificato, penso che tu sia sfortunato.

Per problemi come questo di solito inizio leggendo la sezione del manuale elisp sulla proprietà "display". Descrive le proprietà che possono essere applicate ai caratteri nel buffer per influire sulla loro visualizzazione.

Leggendo questo, non ho visto nulla che controlli se una linea è chiusa o meno - solo come visualizzare il rientro e simili quando si verifica il wrapping.

Quindi per ora credo che la risposta sia "no". Recentemente si è parlato di emacs-devel sull'aggiunta di funzioni di wrapping per la visualizzazione, quindi forse c'è qualche speranza per il futuro.


1
Concordo sul fatto che l'utilizzo di un modello di modifica del buffer come punto di partenza (ovvero, modalità longline) sia il metodo meno preferito. Non sono rispettosamente d'accordo, tuttavia, con l'idea che il poster originale potrebbe essere sfortunato. Un overlay con una 'invisible to una 'display ""proprietà non modifica il testo del buffer e tale overlay può effettivamente troncare visivamente qualsiasi linea nel buffer, ciò può essere fatto in modo selettivo. In altre parole, word-wraprimane attivo mentre è possibile eseguire il troncamento mirato con le sovrapposizioni.
elenco delle leggi

1
Bene ... quindi, penso che un altro modo in cui potrebbe essere fatto è "riempire" il testo contrassegnando alcuni spazi con una proprietà di visualizzazione di sostituzione stringa che contiene una nuova riga. Questo sembrerebbe avvolgere, forse. Tuttavia, questo sembra ostile come modificare il testo ai fini della modifica, poiché il display sarà diverso da quello che si vede. Inoltre, avrai bisogno di un codice speciale per continuare a riempire, suppongo. Ma ... sì, forse c'è un modo.
Tom Tromey,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.