org-modeが見出しで行うようにLaTeXセクションを非表示/表示するにはどうすればよいですか?


29

組織ファイルを編集するときTAB、見出しを押すだけで見出しとそのコンテンツを非表示および表示できる方法は非常に便利です。

たとえば、次のバッファを検討してください

* Headline 1
Some text here.

* Headline 2
Some more text here.

最初*にポイントを配置し、TABを押すと、次のようになります:

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

LaTeXセクションでそれを達成する方法はありますか?
つまり、タイトルを表示したまま、LaTeXセクション/章/などのコンテンツを非表示および表示するにはどうすればよいですか?LaTeXモードにAucTeXを使用していますが、この役割を満たすと思われるものは見つかりませんでした。


回答:


13

NB:このテキストの多くは、この質問の複製であることが判明した質問への回答から来ました。一部の資料は十分に異なるため、この質問に追加する価値があると思われました。

アウトラインモードとAUCTeX 折りたたみ機能は、バッファの選択された部分を非表示および表示するという、ほぼ同じことを行うことを意図した2つの異なる獣です。

outline-minor-mode

使用時に認識する重要な要素outline-minor-modeは、モーションキーなどとのキーの競合を正確に回避するために、それとは異なるプレフィックスキーoutline-mode(つまり、メジャーモード)をC-c @持っているということです。カスタマイズして変更しoutline-minor-mode-prefixます)。マニュアルのこのノードにリストされているすべてのキーバインドは引き続き機能しますが、メジャーモードプレフィックスのC-cマイナーモードプレフィックスので置き換えるというひねりが加えられていますC-c @。したがって、C-c @ C-cruns hide-entryC-c @ C-eruns show-entryなどのようになります。

これらの機能を使用するには、を有効にする必要がありますoutline-minor-mode。最も簡単な方法は、モードフックを使用することです。

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

変化 outline-minor-mode-prefix

変更するのは簡単なことであるはずですoutline-minor-mode-prefix(以前戻っていました)。しかし、そうではありません。なんて楽しい!

docstringは、次のような不可解なメモを提供します。

アウトラインマイナーモードでアウトラインコマンドに使用するプレフィックスキー。この変数の値は、アウトラインモードのロードの一部としてチェックされます。その後、プレフィックスキーを変更するには、キーマップを操作する必要があります。

はい、とても役に立ちました。奇妙なことに、customizedefcustomソースコードで定義されているにもかかわらず」「キーマップの操作」を避けるために、この変数を時間内に設定しません。実用的な回避策:ロードする前に初期化ファイルこの変数を設定するoutlineか、他の何かを構築します(例:)org-mode

たとえば、プレフィックスを必要C-oとする場合があります(これは負けていることを意味しますがopen-line、本当に必要な場合は再バインドできます)。initファイルの初期に次のものを入れるとうまくいきます。

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

これで、C-o接頭辞を使用して、アウトラインモードのすべての機能にアクセスできるようになります- C-o C-c呼び出しhide-entryC-o C-e呼び出しshow-entry、など。

新しいアウトライン見出しの追加

追加のボーナスとして、どのアウトラインヘッダーを折りたたむか、どのレベルにするかをカスタマイズすることもできます。たとえば、「偽の」セクションヘッダーを作成して、真のLaTeXヘッダーを持たないが、論理的にはドキュメントの同じレベルに保持されるテキストを隠すことができるようにしたいと思います。次のコードでは、次を使用できます。

%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

そして、他のセクションと同じように偽のセクションを操作できますが、ドキュメントをコンパイルするときにLaTeXはそれを無視します。

;; 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-magicアウトラインモードを拡張org-modeして、マジックタブキーで非表示/表示のように使用します。つまり、おそらくこれをワークフローに追加して、LaTeXドキュメントをドキュメントのように動作させることができますorg。(私は自分で使用しないので、機能についてコメントすることはできません。)

AUCTeX折りたたみ機能

AUCTeXの折りたたみ機能は、環境ではなく、セクションではなく(紛らわしいことに)マクロと呼ばれる環境で機能します。この機能を使用するには、で有効にする必要がありますTeX-fold-mode

たとえば、展開されたitemize 環境は次のようになります。

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

環境内で呼び出すTeX-fold-env(デフォルトC-c C-o C-e:)と、次のように折り畳まれます。

[itemize]

カーソルを内部のどこかに配置[itemize]すると、編集中に一時的に再びカーソルが展開され[itemize]、カーソルが環境の外に移動したときに元に戻ります。

「マクロ」とは、AUCTeXのようなものを意味し\footnote{...}ます。したがって、内部で呼び出した場合TeX-fold-macro(デフォルト:)に折り畳まれます; 環境で起こることと同様の方法で拡張および縮小します。C-c C-o C-m\footnote{This is a footnote}[f]

outline-minor-mode同じドキュメントでAUCTeXの折り畳み機能の両方を一緒に使用できます。それらは、その異なる部分で異なることを行います。


1
記録のためだけに、「マクロ」という名前はAUCTeXではなく、* TeXのこれらの「もの」の名前です。これは、elispマクロを含むマクロ拡張言語のマクロと同じ概念です。最後の文について、主に機能するのは、異なるキーバインドを使用しているためです。両方を統合しようとする試み(github.com/mlf176f2/fold-dwim-org)がありますが、まだ完全には機能していません。
T.バーロン14年

また、注目に値するのは、LaTeXセクションは組織見出しに非常に似ており、LaTeX環境は組織ブロックに非常に似ていることです。Orgはの両方で折りたたまれTAB、AUTCeXでも機能する可能性があります。マクロTABを折りたたむのは、私の意見では迷惑でしょう(インラインマークダウン仕様の折り畳みに似ています...)。
T.バーロン14年

そして最後のポイントは、outline-minor-modeAUCTeXですぐに使えるはずです:gnu.org/software/auctex/manual/auctex/Outline.html つまり、LaTeXで新しい見出しマクロの定義を開始するまで…
T. Verron 14年

26

必要なものは折りたたみと呼ばれ、それを行うには2つの方法があります。

アウトラインマイナーモード

これは組み込みのマイナーモードであり、org-modeが見出しの非表示と表示に使用するものです。あなたはそれが常にオンだことを確認することができますlatex-mode

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

それが定義するキーバインドは少し使いにくいので、それらのいくつかを変更したいかもしれません。

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は、MelpaおよびMelpa-stableで使用可能なマイナーモードです。でインストールしM-x package-install RET latex-extra、オンにすることができます

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

に一連の便利さを追加しますlatex-mode。そのうちの1つはセクションの折りたたみです。舞台裏でlatex-extraも使用しますoutline-minor-modeが、利点は組織モードの動作をより厳密にエミュレートすることです(同一ではありませんが)。

そのreadmeから:

org-modeがサブツリーを非表示および表示する方法と同様に、セクションヘッダーでTABを押すと latex-extraはそのセクションのコンテンツを非表示にします。タブを2回押すと、再び展開します。
これは、yasnippetやオートコンプリートなど、TABに設定した他のキーバインドと干渉しません

Shift-TABは、バッファ全体に対して同じことを行います。

もちろん、章、サブセクションなどにも同じことが言えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.