LaTeX bölümünü, org-mode başlıklarında olduğu gibi nasıl gizleyebilir / görüntüleyebilirim?


29

Org dosyalarını düzenlerken, başlıkları ve içeriklerini sadece başlığa tıklayarak gizlemeyi ve görüntülemeyi son derece kullanışlı buluyorum TAB.

Örneğin, aşağıdaki tamponu göz önünde bulundurun

* Headline 1
Some text here.

* Headline 2
Some more text here.

Eğer ilk noktaya *konup isabet TABedersem, aşağıdakileri alırım:

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

LaTeX bölümleriyle bunu başarmanın bir yolu var mı?
yani, başlığı görünür tutarken bir LaTeX bölümünün / bölümünün / etc'nin içeriğini nasıl gizleyebilir ve görüntüleyebilirim? LaTeX modu için AucTeX kullanıyorum, ancak bu rolü dolduracak hiçbir şey bulamadım.


Yanıtlar:


13

Not: bu metnin çoğu, bu sorunun bir kopyası olduğu ortaya çıkan bir sorunun cevabından geldi . Materyallerden bazıları, bu soruya eklemeye değecek kadar farklı görünüyordu.

Anahat modu ve AUCTeX katlama tesisleri , genel olarak aynı şeyi yapması gereken iki farklı canavardır : tamponun seçilen kısımlarını gizleyin ve gösterin.

outline-minor-mode

Kullanırken temel öğelerinden biri tanımak için outline-minor-modebu daha farklı bir önek anahtar kimde olduğunu outline-mode(yani ana mod ) - tam hareket tuşları, vb Yani önek varsayılan kilit çatışmaları önlemek için garip-to-tipi C-c @(olabildiğince rağmen özelleştirerek değiştirin outline-minor-mode-prefix). Listelenen tüm keybinding kılavuzun bu düğümü olmalıdır hala iş, ama yerine o twist büyük modu öneki C-cile minör modu önek C-c @. Dolayısıyla, C-c @ C-ckoşar hide-entry, C-c @ C-ekoşar show-entryvb.

Bu tesisleri kullanmak için, etkinleştirmeniz gerekir outline-minor-mode. En basit yöntem bir mod kancasıyla:

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

değiştirme outline-minor-mode-prefix

Değişmesi basit bir şey olmalıoutline-minor-mode-prefix ( eskiden geri döndüm). Ama değil. Ne komik!

Dokümantasyon artık şifreli bir not veriyor:

Anahat komutları için Anahat küçük modunda kullanılacak önek tuşu. Bu değişkenin değeri, Anahat modunun yüklenmesinin bir parçası olarak kontrol edilir. Ondan sonra, önek anahtarını değiştirmek, tuş haritalarını değiştirmeyi gerektirir.

Evet, çok yararlı. İşin garibi, anahtar customizedeğişkeni değiştirmekten kaçınmak için zaman zaman bu değişkeni bile ayarlamıyor ( defcustomkaynak kodda tanımlanmış olmasına rağmen ). Pratik çalışma: Bu değişkeni, yüklemeden veya başka bir şey yapmadan önce init dosyanızda ayarlayın outline(örn org-mode.).

Örneğin, ön ekin olmasını isteyebilirsiniz C-o(yani kaybediyorsunuzdur open-line, ancak gerçekten isterseniz bunu yeniden bağlayabilirsiniz). Aşağıdakileri init dosyanıza koymak hile yapar:

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

Şimdi, arama yapmak , aramak vb. C-oÖnekini kullanarak tüm anahat modu işlevlerine erişebilmelisiniz .C-o C-chide-entryC-o C-eshow-entry

yeni anahat başlıkları eklemek

Ek bir bonus olarak, hangi anahat başlıklarının katlanabileceğini ve hangi seviyelere göre özelleştirebilirsiniz. Örneğin, gerçek bir LaTeX başlığına sahip olmayan, ancak mantıksal olarak belgenin aynı seviyesinde tutulan metni gizlemek için "sahte" bölüm başlıkları yapabilmek istiyorum. Aşağıdaki kod ile kullanabilirsiniz:

%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

Ve sahte bölümleri tıpkı diğerleri gibi değiştirebileceksiniz, ancak belgeyi derlerken LaTeX bunu görmezden gelecektir:

;; 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-magicTaslak modlarını org-mode, sihirli sekme tuşuyla benzeri saklanmaya / göstermeye genişletir . Başka bir deyişle, bunu muhtemelen iş akışınıza ekleyebilir ve LaTeX belgelerinizin daha benzer orgbelgeler gibi davranmasını sağlayabilirsiniz . (Kendim kullanmıyorum, bu yüzden işlevsellik hakkında yorum yapamam.)

AUCTeX katlama tesisleri

AUCTeX'in katlama tesisleri, ortamlar üzerinde ve (kafa karıştırıcı olarak) bölümler yerine makro olarak adlandırdıkları yerlerde çalışır . Bu işlevi kullanmak için, onu etkinleştirmeniz gerekir TeX-fold-mode.

Örneğin , açılmamış itemize ortam aşağıdaki gibi görünebilir:

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

Ortamın içinde arama yapmak TeX-fold-env(varsayılan C-c C-o C-e:) aşağıdaki gibi görünmesini sağlar:

[itemize]

İmleci içine bir yere yerleştirmek [itemize], düzenlerken tekrar geçici olarak genişletir ve ardından [itemize]imleci ortamdan çıkardığınızda geriye doğru katlanır .

Bir "makro", AUCTeX gibi şeyler anlamına gelir \footnote{...}. Bu nedenle, içeride arama yapmak TeX-fold-macro(varsayılan C-c C-o C-m:) içeri \footnote{This is a footnote}katlanacak [f]; ortamlarla olanlara benzer şekilde genişleyecek ve daralacaktır.

Hem outline-minor-modeAUCTeX'in hem de katlama tesislerini aynı belgede birlikte kullanabilirsiniz : farklı parçaları üzerinde farklı şeyler yaparlar.


1
Sadece kayıt için, "makro" ismi bir AUCTeX tuhaflığı değil, * "TeX" te bu "işlerin" ismi. Elisp makroları da dahil olmak üzere, makro genişletme dilindeki makrolarla aynı kavramdır. Son cümleniz hakkında, bunun çoğunlukla işe yaradığını eklerdim çünkü farklı anahtarlıklar kullanıyorlar. Her ikisini de birleştirmek için girişimler var ( github.com/mlf176f2/fold-dwim-org ), ancak henüz tamamen işlevsel değiller.
T. Verron

Ayrıca, LaTeX bölümlerinin org başlıklarına çok benzemesi ve LaTeX ortamlarının org bloklarına çok benzemesi de dikkat çekicidir. Org her ikisiyle de TABkıvrılıyor ve bu muhtemelen AUCTeX'te çalışmak için yapılabilir. Makroları TABkatlamak bence can sıkıcı olurdu (satır içi işaretleme özelliklerini katlamaya benzerdi ...).
T. Verron

Ve son nokta, outline-minor-modeAUCTeX ile hazır olarak çalışmalı: gnu.org/software/auctex/manual/auctex/Outline.html . Diğer bir deyişle,
LaTeX'te

26

İstediğinize katlama denir ve bunu yapmanın 2 yolu vardır.

Anahat-minör-mod

Bu, org modunun başlıklarını gizlemek ve görüntülemek için tam olarak kullandığı yerleşik bir küçük moddur. Bunu her zaman açık olduğundan emin olun latex-modeile

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

Tanımladığı anahtar sözcükleri kullanmak biraz zor, bu yüzden bazılarını değiştirmek isteyebilirsiniz.

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

Lateks-ekstra

lateks-extra , Melpa ve Melpa-stabil'de kullanılabilen küçük bir moddur. M-x package-install RET latex-extraİle yükleyebilir ve açabilirsiniz

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

latex-modeBunlardan biri bölüm katlama olan bir dizi kolaylık ekler . latex-extraayrıca outline-minor-modeperde arkasında da kullanılır , ancak avantajı, org-modun davranışını daha yakından taklit etmesidir (aynı olmasa da).

Onun Gönderen Benioku'da :

Org-mode'un alt ağaçların gizlenip görüntülenmesine benzer şekilde, eğer bir bölüm başlığındaki TAB tuşuna basarsanız lateks-ekstra bu bölümün içeriğini sizin için gizleyecektir. Sekmeye iki kez basıldığında tekrar genişletilir.
Bu olacak değil için belirlediğiniz diğer keybinds ile ne olursa olsun müdahale TAB böyle yasnippet veya otomatik tamamlama gibi.

Shift-TAB , tamponun tamamı için aynı şeyi yapacaktır.

Tabii ki, aynı bölüm, alt bölümler, vb. İçin de geçerlidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.