Come posso nascondere / visualizzare la sezione LaTeX proprio come fa la modalità org con i titoli?


29

Quando modifico i file organizzativi, trovo estremamente conveniente come nascondere e visualizzare i titoli e il loro contenuto semplicemente premendo TABsul titolo.

Ad esempio, considerare il seguente buffer

* Headline 1
Some text here.

* Headline 2
Some more text here.

Se posiziono il punto sul primo *e premo TAB, otterrò quanto segue:

* Headline 1...
* Headline 2
Some more text here.

C'è un modo per raggiungere questo obiettivo con le sezioni LaTeX?
cioè, come posso nascondere e visualizzare i contenuti di una sezione / capitolo / etc di LaTeX, mantenendo il titolo visibile? Sto usando AucTeX per la modalità LaTeX ma non ho trovato nulla che sembra ricoprire questo ruolo.


Guarda Org al di fuori di Org: orgmode.org/worg/org-tutorials/org-outside-org.html e modalità outshine: github.com/tj64/outshine
mankoff

Risposte:


13

NB: gran parte di questo testo deriva da una risposta a una domanda che si è rivelata un duplicato di questa domanda . Parte del materiale è sufficientemente diverso da sembrare utile aggiungerlo a questa domanda.

La modalità Contorno e le strutture di piegatura di AUCTeX sono due diverse bestie che hanno lo scopo di fare sostanzialmente la stessa cosa: nascondere e mostrare parti selezionate del buffer.

outline-minor-mode

Un elemento chiave da riconoscere quando si usa outline-minor-modeè che ha una chiave di prefisso diversa rispetto a outline-mode(cioè, la modalità principale ) - precisamente per evitare conflitti di chiave con tasti di movimento, ecc. Quel prefisso passa automaticamente al tipo imbarazzante C-c @(anche se è possibile cambiarlo personalizzando outline-minor-mode-prefix). Tutte le combinazioni di tasti elencate in questo nodo del manuale dovrebbero comunque funzionare, ma con la differenza che si sostituisce il prefisso della modalità principaleC-c con il prefisso della modalità minore di C-c @. Quindi, C-c @ C-ccorre hide-entry, C-c @ C-ecorre show-entrye così via.

Per utilizzare queste strutture, è necessario abilitare outline-minor-mode. Il modo più semplice è con un hook di modalità:

(add-hook 'LaTeX-mode-hook #'outline-minor-mode)

mutevole outline-minor-mode-prefix

Esso dovrebbe essere una cosa semplice da cambiare outline-minor-mode-prefixusato per essere di nuovo nel corso della giornata). Ma non lo è. Che divertimento!

Il docstring ora dà una nota criptica che:

Tasto prefisso da utilizzare per i comandi Struttura nella modalità secondaria Struttura. Il valore di questa variabile viene verificato come parte del caricamento della modalità Struttura. Successivamente, la modifica della chiave prefisso richiede la manipolazione di mappe di tasti.

Sì, molto utile. Stranamente, nemmeno customizeimposta questa variabile in tempo per evitare di "manipolare le keymap" (nonostante sia definita con defcustomnel codice sorgente). La soluzione pratica: imposta questa variabile nel tuo file init prima di caricare outlineo qualsiasi altra cosa costruita da esso (ad esempio, org-mode).

Ad esempio, potresti voler essere il prefisso C-o(il che significa che stai perdendo open-line, ma puoi ricollegarlo se lo vuoi davvero). Mettere quanto segue all'inizio del tuo file init farà il trucco:

(global-unset-key "\C-o")
(setq outline-minor-mode-prefix "\C-o")

Ora, dovresti essere in grado di accedere a tutte le funzionalità della modalità struttura usando il C-oprefisso: C-o C-cchiamare hide-entry, C-o C-echiamare show-entrye così via.

aggiunta di nuove intestazioni di contorno

Come bonus aggiuntivo, puoi anche personalizzare quali intestazioni di contorno possono essere piegate e a quali livelli. Ad esempio, mi piacerebbe poter creare intestazioni di sezione "false" per nascondere il testo che non ha una vera intestazione LaTeX, ma logicamente viene mantenuto allo stesso livello del documento. Con il seguente codice, è possibile utilizzare:

%section{a fake section}

Blah blah blah blah blah, LaTeX doesn't recognize me as a section...

\section{a real section}

Blah blah blah blah blah, LaTeX treats me as a real section

E sarai in grado di manipolare la sezione falsa come qualsiasi altra, ma LaTeX la ignorerà quando compili il documento:

;; extra outline headers 
(setq TeX-outline-extra
      '(("%chapter" 1)
        ("%section" 2)
        ("%subsection" 3)
        ("%subsubsection" 4)
        ("%paragraph" 5)))

;; add font locking to the headers
(font-lock-add-keywords
 'latex-mode
 '(("^%\\(chapter\\|\\(sub\\|subsub\\)?section\\|paragraph\\)"
    0 'font-lock-keyword-face t)
   ("^%chapter{\\(.*\\)}"       1 'font-latex-sectioning-1-face t)
   ("^%section{\\(.*\\)}"       1 'font-latex-sectioning-2-face t)
   ("^%subsection{\\(.*\\)}"    1 'font-latex-sectioning-3-face t)
   ("^%subsubsection{\\(.*\\)}" 1 'font-latex-sectioning-4-face t)
   ("^%paragraph{\\(.*\\)}"     1 'font-latex-sectioning-5-face t)))

outline-magic

outline-magicestende le modalità di contorno per usare org-modenascondimenti / proiezioni simili a quelli con il tasto tab magico. In altre parole, probabilmente puoi aggiungerlo al tuo flusso di lavoro e far sì che i tuoi documenti LaTeX si comportino più come orgdocumenti. (Non lo uso da solo, quindi non posso commentare la funzionalità.)

Strutture pieghevoli AUCTeX

Le strutture pieghevoli di AUCTeX funzionano sugli ambienti e su ciò che chiamano (confusamente) macro , piuttosto che sezioni. Per utilizzare questa funzionalità, è necessario abilitarlo con TeX-fold-mode.

Ad esempio, l' itemize ambiente , spiegato, potrebbe apparire come:

\begin{itemize}
  \item An item
  \item Another item
\end{itemize}

La chiamata TeX-fold-env(impostazione predefinita :) C-c C-o C-eall'interno dell'ambiente lo piega in modo che assomigli a:

[itemize]

Posizionando il cursore da qualche parte all'interno, [itemize]lo espanderete temporaneamente mentre lo modificate, quindi ripiegherà verso il basso [itemize]quando spostate il cursore fuori dall'ambiente.

Per "macro", AUCTeX significa cose come \footnote{...}. Quindi, chiamare TeX-fold-macro(default:) C-c C-o C-mquando dentro \footnote{This is a footnote}lo piegherà a [f]; si espanderà e si contraerà in modo analogo a ciò che accade con gli ambienti.

Puoi usare entrambe outline-minor-modele strutture di piegatura di AUCTeX insieme nello stesso documento: fanno cose diverse su parti diverse di esso.


1
Per la cronaca, il nome "macro" non è una stranezza AUCTeX, è il nome di queste "cose" in * TeX. È lo stesso concetto delle macro in qualsiasi linguaggio in espansione macro, comprese le macro elisp. Circa la tua ultima frase, aggiungerei che funziona principalmente perché usano combinazioni di tasti diverse. Ci sono tentativi di unificare entrambi ( github.com/mlf176f2/fold-dwim-org ) ma non sono ancora completamente funzionali.
T. Verron,

Vale anche la pena notare che le sezioni LaTeX sono molto simili ai titoli delle organizzazioni e gli ambienti LaTeX sono molto simili ai blocchi organizzativi. Org piega entrambi con TAB, e questo potrebbe probabilmente essere fatto funzionare per AUCTeX. Piegare le macro con TABsarebbe fastidioso secondo me (sarebbe simile a piegare le specifiche di markdown in linea ...).
T. Verron,

E ultimo punto, outline-minor-modedovrebbe funzionare immediatamente con AUCTeX: gnu.org/software/auctex/manual/auctex/Outline.html . Cioè, fino a quando non inizi a definire nuove macro di intestazione in LaTeX ...
T. Verron,

26

Quello che vuoi è chiamato pieghevole, e ci sono 2 modi per farlo.

Outline-minor-mode

Questa è una modalità secondaria integrata che è esattamente ciò che la modalità org utilizza per nascondere e visualizzare i titoli. Puoi assicurarti che sia sempre acceso latex-modecon

(add-hook 'LaTeX-mode-hook #'outline-minor-mode)

Le combinazioni di tasti che definisce sono un po 'difficili da usare, quindi potresti voler cambiare alcune di esse.

C-c @ C-a       show-all
C-c @ C-c       hide-entry
C-c @ C-d       hide-subtree
C-c @ C-e       show-entry
C-c @ TAB       show-children
C-c @ C-k       show-branches
C-c @ C-l       hide-leaves
C-c @ C-o       hide-other
C-c @ C-q       hide-sublevels
C-c @ C-s       show-subtree
C-c @ C-t       hide-body

Latex-extra

latex-extra è una modalità minore disponibile su Melpa e Melpa-stable. Puoi installarlo con M-x package-install RET latex-extrae accenderlo con

(add-hook 'LaTeX-mode-hook #'latex-extra-mode)

Aggiunge una serie di vantaggi a latex-mode, uno di questi è la piegatura della sezione. latex-extrautilizza anche outline-minor-modedietro le quinte, ma il vantaggio è che emula il comportamento della modalità org più da vicino (anche se non in modo identico).

Dal suo readme :

Simile al modo in cui la modalità org nasconde e visualizza i sottotitoli, se si preme TAB su un'intestazione di sezione latex-extra nasconderai i contenuti di quella sezione per te. Premi due volte la scheda per espanderla di nuovo.
Ciò non interferirà con qualsiasi altra combinazione di tasti impostata per TAB , come yasnippet o completamento automatico.

Shift-TAB farà lo stesso per l'intero buffer.

Naturalmente, lo stesso vale per i capitoli, le sottosezioni, ecc.

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.