Wie kann ich den LaTeX-Bereich genau wie den Organisationsmodus mit Überschriften ein- und ausblenden?

29

Beim Bearbeiten von Organisationsdateien finde ich es äußerst praktisch, wie Sie Überschriften und deren Inhalt ausblenden und anzeigen können, indem Sie einfach TABauf die Überschrift klicken.

Betrachten Sie beispielsweise den folgenden Puffer

* Headline 1
Some text here.

* Headline 2
Some more text here.

Wenn ich den Punkt auf den ersten platziere *und drücke TAB, erhalte ich Folgendes:

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

Gibt es eine Möglichkeit, dies mit LaTeX-Abschnitten zu erreichen?
dh, wie kann ich den Inhalt eines LaTeX-Abschnitts / Kapitels / usw. ausblenden und anzeigen, während der Titel sichtbar bleibt? Ich verwende AucTeX für den LaTeX-Modus, aber ich habe nichts gefunden, was diese Rolle zu erfüllen scheint.

Malabarba
quelle
Siehe Org außerhalb von Org: orgmode.org/worg/org-tutorials/org-outside-org.html und outshine mode: github.com/tj64/outshine
mankoff

Antworten:

13

NB: Ein Großteil dieses Textes stammt von einer Antwort auf eine Frage, die sich als Duplikat dieser Frage herausstellte . Ein Teil des Materials ist so unterschiedlich, dass es sich gelohnt hat, es dieser Frage hinzuzufügen.

Der Umrissmodus und die AUCTeX- Falteinrichtungen sind zwei verschiedene Bestien, die im Großen und Ganzen dasselbe tun sollen: Ausgewählte Teile des Puffers ein- und ausblenden.

outline-minor-mode

Ein Schlüsselelement, das bei der Verwendung erkannt werden muss, outline-minor-modeist, dass es einen anderen Präfixschlüssel hat als outline-mode(dh den Hauptmodus ) - genau, um Schlüsselkonflikte mit Bewegungstasten usw. zu vermeiden. Dieser Präfix ist standardmäßig der Typ "umständlich" C-c @(obwohl Sie dies können) ändern Sie das, indem Sie besonders anfertigen outline-minor-mode-prefix). Alle die Tastenbelegungen auf aufgelistet diesem Knoten des Handbuch soll noch arbeiten, aber mit dem Drall , dass Sie den ersetzen Hauptmodus Präfix C-cmit dem kleineren Modus Präfix C-c @. Daher C-c @ C-cläuft hide-entry, C-c @ C-eläuft show-entryund so weiter.

Um diese Funktionen nutzen zu können, müssen Sie aktivieren outline-minor-mode. Der einfachste Weg ist mit einem Mode-Hook:

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

Ändern outline-minor-mode-prefix

Es sollte einfach zu ändern sein outline-minor-mode-prefix( früher war es wieder so). Aber es ist nicht. Was für ein Spaß!

Der Docstring gibt nun eine kryptische Notiz aus, die:

Präfixschlüssel für Gliederungsbefehle im Nebenmodus "Gliederung". Der Wert dieser Variablen wird beim Laden des Gliederungsmodus überprüft. Danach müssen Sie zum Ändern des Präfixschlüssels die Keymaps bearbeiten.

Ja, sehr hilfreich. Seltsamerweise setzt even customizediese Variable nicht rechtzeitig, um das "Manipulieren von Keymaps" zu vermeiden (obwohl dies defcustomim Quellcode definiert ist). Das praktische Umgehen: Setzen Sie diese Variable in Ihrer Init-Datei, bevor Sie sie laden outlineoder etwas anderes, das daraus aufgebaut ist (z org-mode. B. ).

Sie möchten möglicherweise beispielsweise das Präfix C-o(was bedeutet, dass Sie verlieren open-line, aber Sie können es erneut binden, wenn Sie es wirklich wollen). Wenn Sie in Ihrer Init-Datei Folgendes eingeben, reicht das aus:

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

Jetzt sollten Sie in der Lage sein, mit dem C-oPräfix " C-o C-cAnrufen" hide-entry, " C-o C-eAnrufen" show-entryusw. auf alle Funktionen des Gliederungsmodus zuzugreifen .

Hinzufügen neuer Gliederungsüberschriften

Als zusätzlichen Bonus können Sie auch anpassen, welche Gliederungsüberschriften gefaltet werden können und auf welche Ebenen. Ich möchte zum Beispiel in der Lage sein, gefälschte Abschnittsüberschriften zu erstellen, um Text auszublenden, der keinen echten LaTeX-Header hat, aber logischerweise auf derselben Ebene des Dokuments bleibt. Mit dem folgenden Code können Sie Folgendes verwenden:

%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

Und Sie können den gefälschten Bereich wie jeden anderen manipulieren, aber LaTeX ignoriert ihn, wenn Sie das Dokument kompilieren:

;; 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-magicErweitert die Gliederungsmodi auf das org-modeAnzeigen / Verbergen mit der magischen Tabulatortaste. Mit anderen Worten, Sie können dies wahrscheinlich zu Ihrem Workflow hinzufügen und Ihre LaTeX-Dokumente eher wie orgDokumente verhalten . (Ich benutze es nicht selbst, kann mich also nicht zur Funktionalität äußern.)

AUCTeX-Falzmöglichkeiten

Die Falteinrichtungen von AUCTeX funktionieren in Umgebungen und (verwirrenderweise) in Form von Makros anstelle von Abschnitten. Um diese Funktionalität nutzen zu können, müssen Sie sie mit aktivieren TeX-fold-mode.

Die itemize Umgebung könnte beispielsweise wie folgt aussehen:

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

Das Aufrufen TeX-fold-env(Standard:) C-c C-o C-einnerhalb der Umgebung faltet es so zusammen, dass es wie folgt aussieht:

[itemize]

Wenn Sie den Cursor an einer anderen Stelle platzieren, [itemize]wird er beim Bearbeiten vorübergehend wieder erweitert und nach unten geklappt, [itemize]wenn Sie den Cursor aus der Umgebung bewegen.

Mit einem "Makro" bedeutet AUCTeX Dinge wie \footnote{...}. Wenn Sie also TeX-fold-macro(default:) C-c C-o C-mwhen inside aufrufen, \footnote{This is a footnote}klappt es auf [f]; es wird sich in analoger Weise ausdehnen und zusammenziehen, wie es mit Umgebungen geschieht.

Sie können die outline-minor-modeFalteinrichtungen von AUCTeX und beide zusammen in einem Dokument verwenden: Sie erledigen verschiedene Aufgaben an verschiedenen Stellen.

Dan
quelle
1
Nur zur Veranschaulichung, der Name "Makro" ist keine AUCTeX-Kuriosität, sondern der Name für diese "Dinge" in * TeX. Es ist dasselbe Konzept wie bei Makros in einer beliebigen Sprache, die Makros erweitert, einschließlich Elisp-Makros. Zu deinem letzten Satz möchte ich hinzufügen, dass es hauptsächlich funktioniert, weil sie unterschiedliche Tastenkombinationen verwenden. Es gibt Versuche, beide zu vereinheitlichen ( github.com/mlf176f2/fold-dwim-org ), aber sie sind noch nicht vollständig funktionsfähig.
T. Verron
Erwähnenswert ist auch, dass LaTeX-Abschnitte Organisationsüberschriften und LaTeX-Umgebungen Organisationsblöcken sehr ähnlich sind. Org klappt beides mit TAB, und dies könnte wahrscheinlich für AUCTeX funktionieren. Das Zusammenfalten von Makros mit TABwäre meiner Meinung nach ärgerlich (es wäre vergleichbar mit dem Zusammenfalten von Inline-Markdown-Spezifikationen ...).
T. Verron
Und letzter Punkt, outline-minor-modesollte sofort mit AUCTeX funktionieren : gnu.org/software/auctex/manual/auctex/Outline.html . Das heißt, bis Sie beginnen, neue Überschriftenmakros in LaTeX zu definieren ...
T. Verron,
26

Was Sie wollen, heißt Falten, und es gibt zwei Möglichkeiten, wie Sie das tun können.

Outline-Minor-Modus

Dies ist ein eingebauter Nebenmodus, der genau das ist, was der Organisationsmodus zum Ausblenden und Anzeigen seiner Überschriften verwendet. Sie können es sicher immer eingeschaltet in latex-modemit

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

Die von ihr definierten Tastenkombinationen sind etwas schwierig zu verwenden, daher möchten Sie möglicherweise einige davon ändern.

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 ist ein Nebenmodus, der für Melpa und Melpa-Stable verfügbar ist. Sie können es mit installieren und mit M-x package-install RET latex-extraeinschalten

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

Es fügt eine Reihe von Bequemlichkeiten hinzu latex-mode, eine davon ist das Falten von Abschnitten. latex-extrawird auch outline-minor-modehinter den Kulissen verwendet, hat jedoch den Vorteil, dass es das Verhalten von org-mode genauer nachahmt (wenn auch nicht identisch).

Aus seiner Readme :

Ähnlich wie org-Modus versteckt und Anzeigen von Teilbäumen, wenn Sie drücken Sie TAB auf einem Abschnitt Kopf Latex-extra den Inhalt dieses Abschnitts für Sie verstecken. Wenn Sie zweimal auf die Registerkarte drücken, wird sie erneut erweitert.
Dies wirkt sich nicht auf andere Tastenkombinationen aus, die Sie für TAB festgelegt haben , z. B. yasnippet oder automatische Vervollständigung.

Shift-TAB macht dasselbe für den gesamten Puffer.

Gleiches gilt natürlich auch für Kapitel, Unterabschnitte usw.

Malabarba
quelle