Làm cách nào tôi có thể ẩn / hiển thị phần LaTeX giống như chế độ org với các tiêu đề?


29

Khi chỉnh sửa tập tin org, tôi thấy cực kỳ thuận tiện khi bạn có thể ẩn và hiển thị các tiêu đề và nội dung của chúng bằng cách chỉ cần nhấn TABvào tiêu đề.

Ví dụ, hãy xem xét bộ đệm sau

* Headline 1
Some text here.

* Headline 2
Some more text here.

Nếu tôi đặt điểm trên đầu tiên *và nhấn TAB, tôi sẽ nhận được những điều sau:

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

Có cách nào để đạt được điều đó với các phần LaTeX không?
tức là, làm cách nào tôi có thể ẩn và hiển thị nội dung của phần / chương / chương trình LaTeX, trong khi vẫn giữ tiêu đề hiển thị? Tôi đang sử dụng AucTeX cho chế độ LaTeX nhưng tôi không tìm thấy bất cứ thứ gì có vẻ phù hợp với vai trò này.


Xem Org bên ngoài Org: orgmode.org/worg/org-tutorials/org-outside-org.html và chế độ thuê ngoài: github.com/tj64/outshine
mankoff

Câu trả lời:


13

NB: phần lớn văn bản này đến từ một câu trả lời cho một câu hỏi hóa ra là một bản sao của câu hỏi này . Một số tài liệu đủ khác nhau mà dường như đáng để thêm nó vào câu hỏi này.

Chế độ phác thảo và các phương tiện gấp AocateeX là hai con thú khác nhau có nghĩa là thực hiện cùng một việc: ẩn và hiển thị các phần được chọn của bộ đệm.

outline-minor-mode

Một yếu tố quan trọng để nhận biết khi sử dụng outline-minor-modelà nó có khóa tiền tố khác với outline-mode( chế độ chính ) - chính xác là để tránh xung đột khóa với các phím chuyển động, v.v. Tiền tố đó mặc định là loại khó xử C-c @(mặc dù bạn có thể thay đổi điều đó bằng cách tùy chỉnh outline-minor-mode-prefix). Tất cả các phím bấm được liệt kê trên nút này của hướng dẫn vẫn hoạt động, nhưng với vòng xoắn mà bạn thay thế tiền tố chế độ chínhC-c bằng tiền tố chế độ phụ của C-c @. Do đó, C-c @ C-cchạy hide-entry, C-c @ C-echạy show-entry, và như vậy.

Để sử dụng các cơ sở này, bạn cần phải kích hoạt outline-minor-mode. Cách đơn giản nhất là với một móc chế độ:

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

thay đổi outline-minor-mode-prefix

nên là một điều đơn giản để thay đổi outline-minor-mode-prefix(nó đã từng trở lại trong ngày). Nhưng nó không phải là. Có gì vui!

Chuỗi doc bây giờ đưa ra một lưu ý khó hiểu rằng:

Phím tiền tố để sử dụng cho các lệnh Outline trong chế độ phụ Outline. Giá trị của biến này được kiểm tra như là một phần của chế độ tải Outline. Sau đó, thay đổi khóa tiền tố yêu cầu thao tác với các keymap.

Vâng, rất hữu ích. Thật kỳ lạ, thậm chí customizekhông đặt biến này kịp thời để tránh "thao tác các keymap" (mặc dù nó được định nghĩa defcustomtrong mã nguồn). Cách giải quyết thực tế: đặt biến này trong tệp init của bạn trước khi bạn tải outlinehoặc bất kỳ thứ gì khác được tạo ra từ nó (ví dụ org-mode:).

Ví dụ, bạn có thể muốn tiền tố trở thành C-o(có nghĩa là bạn đang thua open-line, nhưng bạn có thể phản hồi lại nếu bạn thực sự muốn nó). Đặt sớm những thứ sau trong tệp init của bạn sẽ thực hiện thủ thuật:

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

Bây giờ, bạn sẽ có thể truy cập tất cả các chức năng chế độ phác thảo bằng cách sử dụng C-otiền tố - C-o C-cđể gọi hide-entry, C-o C-eđể gọi show-entry, v.v.

thêm tiêu đề phác thảo mới

Là một phần thưởng bổ sung, bạn cũng có thể tùy chỉnh các tiêu đề phác thảo có thể được gấp lại và theo cấp độ nào. Ví dụ, tôi muốn có thể tạo các tiêu đề phần "giả mạo" để ẩn văn bản không có tiêu đề LaTeX thực sự, nhưng về mặt logic được giữ ở cùng cấp độ của tài liệu. Với đoạn mã sau, bạn có thể sử dụng:

%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

Và bạn sẽ có thể thao tác phần giả giống như bất kỳ phần nào khác, nhưng LaTeX sẽ bỏ qua phần này khi bạn biên dịch tài liệu:

;; 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-magicmở rộng các chế độ phác thảo để org-modeẩn / hiển thị giống như sử dụng phím tab ma thuật. Nói cách khác, bạn có thể có thể thêm phần này vào quy trình làm việc của mình và làm cho các tài liệu LaTeX của bạn hoạt động giống như các orgtài liệu hơn. (Tôi không sử dụng bản thân mình, vì vậy không thể nhận xét về chức năng.)

Cơ sở gấp AocateeX

Các cơ sở gấp của AocateeX hoạt động trên môi trường và những gì họ (khó hiểu) gọi là macro , thay vì các phần. Để sử dụng chức năng này, bạn sẽ cần kích hoạt nó với TeX-fold-mode.

Ví dụ: itemize môi trường , được mở ra, có thể trông giống như:

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

Gọi TeX-fold-env(mặc định C-c C-o C-e:) bên trong môi trường sẽ gấp lại để trông giống như:

[itemize]

Đặt con trỏ ở đâu đó bên trong [itemize]sẽ tạm thời mở rộng nó một lần nữa trong khi bạn chỉnh sửa nó, và sau đó sẽ gập xuống [itemize]khi bạn di chuyển con trỏ ra khỏi môi trường.

Theo một "vĩ mô", AocateeX có nghĩa là những thứ như \footnote{...}. Do đó, gọi TeX-fold-macro(mặc định C-c C-o C-m:) khi bên trong \footnote{This is a footnote}sẽ gấp lại [f]; nó sẽ mở rộng và hợp đồng theo cách tương tự với những gì xảy ra với môi trường.

Bạn có thể sử dụng cả hai outline-minor-modevà các cơ sở gấp của AocateeX trong cùng một tài liệu: họ làm những việc khác nhau trên các phần khác nhau của nó.


1
Chỉ để ghi lại, tên "macro" không phải là một sự kỳ quặc của AocateeX, đó là tên của những "thứ" này trong * TeX. Đây là khái niệm tương tự như macro trong bất kỳ ngôn ngữ mở rộng vĩ mô nào, bao gồm cả macro elisp. Về câu cuối cùng của bạn, tôi sẽ nói thêm rằng nó chủ yếu hoạt động vì họ sử dụng các phím bấm khác nhau. Có những nỗ lực để thống nhất cả hai ( github.com/mlf176f2/print-dwim-org ) nhưng chúng chưa hoàn toàn hoạt động.
T. Verron

Cũng đáng chú ý là các phần LaTeX rất giống các tiêu đề org và môi trường LaTeX rất giống các khối org. Org gấp cả hai với TAB, và điều này có lẽ có thể được thực hiện để làm việc cho AocateeX. TABTheo quan điểm của tôi, việc gấp các macro sẽ gây khó chịu (nó sẽ giống với việc gấp các thông số kỹ thuật đánh dấu nội tuyến ...).
T. Verron

Và điểm cuối cùng, outline-minor-modenên hoạt động vượt trội với AocateeX: gnu.org/software/auctex/manual/auctex/Outline.html . Đó là, cho đến khi bạn bắt đầu xác định các macro tiêu đề mới trong LaTeX ...
T. Verron

26

Những gì bạn muốn được gọi là gấp, và có 2 cách bạn có thể làm điều đó.

Phác thảo tiểu chế độ

Đây là chế độ nhỏ tích hợp chính xác là những gì chế độ org sử dụng để ẩn và hiển thị các tiêu đề của nó. Bạn có thể chắc chắn rằng nó luôn được bật latex-modevới

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

Các tổ hợp phím mà nó xác định hơi khó sử dụng, vì vậy bạn có thể muốn thay đổi một số trong số chúng.

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

Mủ cao su

latex-Extra là một chế độ nhỏ có sẵn trên Melpa và Melpa-ổn định. Bạn có thể cài đặt nó M-x package-install RET latex-extravà bật nó lên với

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

Nó bổ sung một loạt các tiện ích latex-mode, một trong số đó là phần gấp. latex-extracũng sử dụng outline-minor-modeđằng sau hậu trường, nhưng ưu điểm là nó mô phỏng hành vi của chế độ org chặt chẽ hơn (mặc dù không giống hệt nhau).

Từ readme của nó :

Tương tự như cách chế độ org ẩn và hiển thị các cây con, nếu bạn nhấn TAB trên phần tiêu đề latex-Extra sẽ ẩn nội dung của phần đó cho bạn. Nhấn tab hai lần sẽ mở rộng nó một lần nữa.
Điều này sẽ không can thiệp vào bất cứ điều gì với các tổ hợp phím khác mà bạn đã đặt cho TAB , chẳng hạn như yasnippet hoặc tự động hoàn thành.

Shift-TAB sẽ làm tương tự cho toàn bộ bộ đệm.

Tất nhiên, tương tự đối với các chương, tiểu mục, v.v.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.