ฉันจะซ่อน / แสดงส่วน LaTeX ได้เช่นเดียวกับโหมด org ทำกับพาดหัวได้อย่างไร


29

เมื่อแก้ไขไฟล์ org ฉันพบว่ามันสะดวกอย่างยิ่งที่คุณสามารถซ่อนและแสดงหัวข้อข่าวและเนื้อหาได้โดยเพียงแค่กดTABที่บรรทัดแรก

ตัวอย่างเช่นพิจารณาบัฟเฟอร์ต่อไปนี้

* Headline 1
Some text here.

* Headline 2
Some more text here.

ถ้าฉันวางจุดแรก*และกดTABฉันจะได้รับต่อไปนี้:

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

มีวิธีในการบรรลุเป้าหมายดังกล่าวด้วยส่วนของน้ำยางหรือไม่?
เช่นฉันจะซ่อนและแสดงเนื้อหาของส่วน LaTeX / ตอน / ฯลฯ ในขณะที่รักษาชื่อมองเห็นได้อย่างไร ฉันใช้ AucTeX สำหรับโหมด LaTeX แต่ฉันไม่พบสิ่งใดที่ดูเหมือนว่าจะเติมเต็มบทบาทนี้


ดูองค์กรภายนอก Org: orgmode.org/worg/org-tutorials/org-outside-org.htmlและโหมด outshine: github.com/tj64/outshine
mankoff

คำตอบ:


13

หมายเหตุ:มากของข้อความนี้มาจากคำตอบสำหรับคำถามที่เปิดออกมาเป็นซ้ำกับคำถามนี้ เนื้อหาบางส่วนมีความแตกต่างอย่างมากพอสมควรที่จะเพิ่มเติมลงในคำถามนี้

โหมดเค้าร่างและสิ่งอำนวยความสะดวกการพับของ AUCTeX เป็นสัตว์สองตัวที่แตกต่างกันซึ่งหมายถึงการทำสิ่งเดียวกันในวงกว้าง: ซ่อนและแสดงส่วนที่เลือกของบัฟเฟอร์

outline-minor-mode

องค์ประกอบสำคัญที่จะรับรู้เมื่อมีการใช้outline-minor-modeก็คือว่ามันมีความสำคัญที่แตกต่างจากคำนำหน้าoutline-mode(เช่นโหมดหลัก ) - แม่นยำเพื่อหลีกเลี่ยงความขัดแย้งที่สำคัญด้วยปุ่มเคลื่อนไหว ฯลฯ ค่าเริ่มต้นคำนำหน้าว่าจะอึดอัดต่อการประเภทC-c @(แม้ว่าคุณจะสามารถ เปลี่ยนสิ่งนั้นด้วยการปรับแต่งoutline-minor-mode-prefix) ทั้งหมด keybindings ที่ระบุไว้ในโหนดของคู่มือนี้จะยังคงทำงาน แต่กับบิดที่คุณเปลี่ยนที่สำคัญคำนำหน้าโหมดของการC-cที่มีเล็ก ๆ น้อย ๆC-c @คำนำหน้าโหมดของการ จึงC-c @ C-cวิ่งhide-entry, C-c @ C-eวิ่งshow-entry, และอื่น ๆ

outline-minor-modeที่จะใช้สิ่งอำนวยความสะดวกเหล่านี้คุณต้องเปิดใช้งาน วิธีที่ง่ายที่สุดคือใช้เบ็ดโหมด:

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

เปลี่ยนแปลง outline-minor-mode-prefix

มันควรเป็นเรื่องง่ายที่จะเปลี่ยนแปลงoutline-minor-mode-prefix(มันเคยเป็นในวันนั้น) แต่มันไม่ใช่ สนุกจัง!

ตอนนี้ docstring ให้โน้ตที่เป็นความลับซึ่ง:

คีย์คำนำหน้าเพื่อใช้สำหรับคำสั่งเค้าร่างในโหมดรองเค้าร่าง ค่าของตัวแปรนี้จะถูกตรวจสอบเป็นส่วนหนึ่งของการโหลดโหมดเค้าร่าง หลังจากนั้นการเปลี่ยนคีย์คำนำหน้าต้องจัดการกับคีย์แมป

ใช่มีประโยชน์มาก ผิดปกติพอถึงแม้ว่าcustomizeจะไม่ได้ตั้งค่าตัวแปรนี้ให้ทันเวลาเพื่อหลีกเลี่ยง "การจัดการกับคีย์แมป" (แม้ว่าจะถูกกำหนดด้วยdefcustomในซอร์สโค้ดก็ตาม) วิธีแก้ปัญหาในทางปฏิบัติ: ตั้งค่าตัวแปรนี้ในไฟล์ init ของคุณก่อนที่คุณจะโหลด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-entry, C-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

และคุณจะสามารถจัดการส่วนปลอมเช่นเดียวกับส่วนอื่น ๆ ได้ แต่น้ำยางจะไม่สนใจเมื่อคุณรวบรวมเอกสาร:

;; 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 มันเป็นแนวคิดเดียวกันกับมาโครในภาษาใด ๆ ที่ขยายมาโครรวมถึงมาโครแบบเอลลิส เกี่ยวกับประโยคสุดท้ายของคุณฉันจะเพิ่มว่าส่วนใหญ่ใช้งานได้เพราะพวกเขาใช้การโยงคีย์ที่แตกต่างกัน มีความพยายามรวมกันทั้งสองอย่าง ( github.com/mlf176f2/fold-dwim-org ) แต่ยังไม่สามารถใช้งานได้ทั้งหมด
T. Verron

นอกจากนี้ที่น่าสังเกตก็คือส่วนของ LaTeX นั้นคล้ายกับส่วนหัวขององค์กรและสภาพแวดล้อมของ LaTeX นั้นก็เหมือนกับส่วนขององค์กร องค์กรมีทั้งสองอย่างด้วยTABกันและอาจทำให้การทำงานกับ AUCTeX เป็นไปได้ มาโครพับTABได้จะน่ารำคาญในความคิดของฉัน (มันจะคล้ายกับการพับคุณสมบัติการดาวน์ไลน์แบบอินไลน์ ... )
T. Verron

และจุดสุดท้ายที่outline-minor-modeควรจะทำงานออกจากกล่องกับ AUCTeX: gnu.org/software/auctex/manual/auctex/Outline.html นั่นคือจนกว่าคุณจะเริ่มกำหนดมาโครหัวเรื่องใหม่ใน LaTeX ...
T. Verron

26

สิ่งที่คุณต้องการเรียกว่าการพับและมี 2 วิธีที่คุณสามารถทำได้

โครงร่างรองโหมด

นี่เป็นโหมดย่อยในตัวซึ่งเป็นสิ่งที่โหมดองค์กรใช้เพื่อซ่อนและแสดงหัวข้อข่าว คุณสามารถตรวจสอบให้แน่ใจว่ามันเปิดอยู่เสมอ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-stabil คุณสามารถติดตั้งM-x package-install RET latex-extraและเปิดใช้งานด้วย

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

มันเพิ่มชุดของความสะดวกสบายให้latex-modeหนึ่งในนั้นคือการพับส่วน latex-extraยังใช้outline-minor-modeเบื้องหลัง แต่ข้อดีคือมันเลียนแบบพฤติกรรมของโหมดองค์กรอย่างใกล้ชิดมากขึ้น (แม้ว่าจะไม่เหมือนกัน)

จากreadme :

เช่นเดียวกับการซ่อนโหมดองค์กรและการแสดงผลของแผนผังย่อยหากคุณกด TABบนส่วนหัวลาเท็กซ์พิเศษจะซ่อนเนื้อหาของส่วนนั้นให้คุณ การกดปุ่มแท็บสองครั้งจะเป็นการขยายอีกครั้ง
สิ่งนี้จะไม่เข้าไปยุ่งกับสิ่งใด ๆ กับปุ่มลัดอื่น ๆ ที่คุณได้ตั้งค่าไว้สำหรับTABเช่น yasnippet หรือการเติมข้อความอัตโนมัติ

Shift-TABจะทำเช่นเดียวกันสำหรับบัฟเฟอร์ทั้งหมด

แน่นอนเหมือนกันไปสำหรับบทย่อยและอื่น ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.