Est-il possible d'avoir un retour automatique à la ligne en standard mais de tronquer certaines lignes dans un tampon en même temps?

8

Je travaille avec de grandes tables LaTeX dans AucTEX et il serait utile de les afficher en lignes tronquées, comme ici:

entrez la description de l'image ici

Les marques rouges sont les caractères "&" qui séparent les colonnes du tableau. Dans le cas de tables avec plusieurs colonnes, le code source en latex pour une ligne de table est plus long que la emacslargeur du cadre et sera donc par défaut encapsulé sur plusieurs lignes. Même avec align-current, cela rendra le code source de la table très difficile à lire et à modifier, donc

  • pour les tableaux, je préfère que les lignes de code source soient tronquées (me forçant à faire défiler horizontalement)
  • alors que pour toute autre latexsource, je préfère l' word wrapadapter à la largeur du cadre

Cependant, pour le vrai texte de mon document LaTeX, je préférerais avoir les word-wrapparamètres normaux .

Question:

Est-il possible d'utiliser word-wrapen standard dans Emacset toujours avoir des environnements latex dans le même tampon comme table, longtableet sidewaystablemontré truncated en même temps?

Aussi pour certains autres environnements comme equation, pycodeou la tikzpicturetroncature semble être plus appropriée. Donc, ce pourrait être une bonne idée de pouvoir définir une liste d'environnements qui ne sont pas enveloppés mais tronqués.

L'habillage doit être un habillage doux (c'est-à-dire que le texte est encapsulé dans la colonne de remplissage dans le tampon, mais cela ne se reflète pas dans le fichier) et l'habillage d'une ligne indentée doit suivre l'indentation de la ligne.

Les solutions devraient également fonctionner pour emacs mais aussi pour Aquamacs 2.5.

Il y a un article de blog qui suggère d'avoir une solution (partielle), mais je n'ai pas trouvé l'implémentation: http://endlessparentheses.com/longlines-mode-in-latex.html

La plupart du temps inoffensifs
la source
3
Cette image est illisible. Veuillez décrire avec du texte exactement ce que vous voulez dire - "comme ici" ne le coupe pas, dans ce cas.
Drew
1
Je ne crois pas qu'Emacs vous le permette (setq word-wrap t) et (setq truncate-lines t)dans le même tampon. Si vous voulez être word-wrapactif, le mieux que vous puissiez probablement obtenir est de placer une superposition invisible sur le texte que vous souhaitez tronquer - faisable, mais non trivial - le code pour cela nécessiterait l'utilisation vertical-motionaprès chaque commande avec suppression / mouvement / placement des superpositions.
lawlist
1
@lawlist: merci, j'avais espéré qu'il serait possible de définir truncate-linespeut-être seulement pour certaines parties d'un texte (certains environnements dans LaTeX) mais je vois que cela pourrait être difficile à réaliser. Il semble que je vais devoir apprendre à basculer word wrap/ truncaterapidement. :)
MostlyHarmless
3
@Martin Vous pouvez lier une clé à toggle-truncate-lines.
Kaushal Modi
2
@Martin Il est possible de faire ce que vous demandez. Vous devrez faire du piratage par-dessus longlines-mode. Voir cet article pour un exemple. J'écrirai une réponse complète plus tard si j'ai le temps.
Malabarba

Réponses:

0

Cela dépend exactement de ce que vous voulez faire.

Dans les commentaires, Malabarba renvoie à un article de blog qui pourrait montrer le chemin. Cependant, je pense que cette approche repose sur (par programmation) la modification du texte tampon. Si cela fonctionne pour vous, tant mieux!

Si vous voulez laisser le texte non modifié, alors je pense que vous n'avez pas de chance.

Pour des problèmes comme celui-ci, je commence généralement par lire la section du manuel elisp sur la propriété "display". Ceci décrit les propriétés qui peuvent être appliquées aux caractères du tampon pour affecter leur affichage.

En lisant ceci, je n'ai rien vu qui contrôle si une ligne est ou non enveloppée - juste comment afficher l'indentation et ainsi de suite quand l'habillage se produit.

Donc pour le moment, je crois que la réponse est "non". Il y a eu des discussions sur emacs-devel récemment sur l'ajout de fonctionnalités d'encapsulation au réaffichage, alors peut-être qu'il y a de l'espoir pour l'avenir.

Tom Tromey
la source
1
Je suis d'accord que l'utilisation d'un modèle de modification de tampon comme point de départ (c'est-à-dire le mode palangre) est la méthode la moins préférée. Je ne suis toutefois pas d'accord avec l'idée que l'affiche originale pourrait ne pas avoir de chance. Une superposition avec une 'invisible tou une 'display ""propriété ne modifie pas le texte du tampon et cette superposition peut effectivement tronquer visuellement n'importe quelle ligne du tampon - cela peut être fait de manière sélective. En d'autres termes, word-wrapreste actif tandis que la troncature ciblée peut être effectuée avec des superpositions.
lawlist
1
Eh bien ... donc, je pense qu'une autre façon de le faire pourrait être de "remplir" le texte en marquant certains espaces avec une propriété d'affichage de substitution de chaîne contenant une nouvelle ligne. Cela semblerait se terminer, peut-être. Cependant - cela semble aussi hostile que de modifier le texte à des fins d'édition, car l'affichage sera différent de ce que l'on voit. Vous auriez également besoin d'un code spécial pour continuer à remplir, je suppose. Mais ... oui, il y a peut-être un moyen.
Tom Tromey