จัดแนวสมการและตารางที่มีหลายแถวในโหมดลาเท็กซ์


12

สมมติว่าฉันกำลังแก้ไขลาเท็กซ์ในโหมดลาเท็กซ์ของ Auctex และฉันมีสมการต่อไปนี้ นี้จะเยื้องเพียงกับ
indent-region

\begin{align}
    \phi & = a + b
    + c + d \\
    & = a + b
    + c + d + e
\end{align}

การจัดตำแหน่งดังกล่าวข้างต้นเป็นสิ่งที่ผมได้รับถ้าฉันเลือกทุกอย่างและตีTAB, ที่อยู่, indent-regionถ้าฉันเพียงแค่ใช้

สิ่งที่ฉันต้องการจะได้รับมีดังต่อไปนี้:
สังเกตวิธีการ+ c + dจัดแนวกับข้อความหลัง & นี้จะทำให้ความรู้สึกมากที่สุดที่จะเป็น+ c + dเป็นส่วนหนึ่งของเดียวกัน "คอลัมน์" = a + bเป็น

\begin{align}
    \phi & = a + b
           + c + d \\
         & = a + b
           + c + d + e
\end{align}

align-currentด้านล่างนี้คือสิ่งที่ผมได้รับถ้าผมเรียก

\begin{align}
    \phi & = a + b
    + c + d \\
         & = a + b
         + c + d + e
\end{align}

ซึ่งเกือบจะไปถึงที่นั่น แต่ก็ไม่มาก ความแตกต่างชัดเจน
นอกจากนี้ถ้าผมตัดสินใจที่จะลบ\phi, align-currentทำบางสิ่งที่แปลกประหลาดเพียง:

\begin{align}
 & = a + b
    + c + d \\
 & = a + b
         + c + d + e
\end{align}

มีวิธีที่ฉันสามารถปรับแต่งalign-currentหรือใช้อย่างอื่นเพื่อให้ได้ผลตามที่ต้องการหรือไม่?


1
ฉันไม่ได้อยู่ที่คอมพิวเตอร์ของฉันเพื่อเขียนคำตอบที่เหมาะสม แต่คุณสามารถเลือกพื้นที่ที่และใช้align-regexpและให้ regex +|=ของตัวละครที่คุณต้องการที่จะปรับ คุณอาจต้องหลบหนีจากตัวละครบางตัว
Kaushal Modi

regex [+=]ที่คุณป้อนเป็นจริง แต่มันจะไม่ให้สิ่งที่คุณต้องการ .. มันจะไม่จัดพร้อมกับ& +
Kaushal Modi

คำตอบ:


6

ผลที่คุณต้องการอยู่แล้วคุณลักษณะ AUCTeX ตั้งแต่ตุลาคม 2013 สิ่งนี้ยังไม่ปรากฏในรีลีสปัจจุบัน (11.87) TABทั้งหมดที่คุณต้องทำคือการทำเครื่องหมายในภูมิภาคและตี ดูLaTeX-hanging-ampersand-positionว่ามีการใช้การเยื้องอย่างไร


ตกลง TAB ใช้งานได้จริง! ตอนนี้ฉันจะเปลี่ยน repo git เป็นแพ็คเกจได้อย่างไร ฉันจัดการเพื่อติดตั้งได้ดี แต่ฉันมีแพ็คเกจ elpa ที่ขึ้นอยู่กับ auctex และดูเหมือนว่าการโทรmake installจาก repo git ดูเหมือนจะไม่ได้กำหนดแพ็คเกจ "auctex" ดังนั้นแพ็คเกจอื่น ๆ จึงไม่สามารถเริ่มต้นได้
Malabarba

(require 'tex-site)ควรจะพอเพียงหลังจากmake installเสร็จสิ้น
abo-abo

@ abo-abo ที่เปิดใช้งาน auctex แต่ package.el ยังไม่เห็นมันสำหรับฉัน ไม่ว่าในกรณีใดฉันได้รับสิ่งนี้โดยติดตั้ง Auctex จาก Elpa และเพิ่งลบทุกอย่างยกเว้น-pkgไฟล์จากไดเรกทอรีการติดตั้ง
Malabarba

4

สมมติว่าคุณไม่มีบรรทัดว่างระหว่าง \ start และ \ end ของสมการของคุณคุณสามารถเรียกใช้ฟังก์ชันนี้ในขณะที่เคอร์เซอร์อยู่ที่ใดก็ได้ในภูมิภาค \ start- \ end

(defun my/align-latex-eq ()
  "Align the & chars and then align the +/= chars."
  (interactive)
  (backward-paragraph)
  (mark-paragraph)
  ;; align-regexp syntax:  align-regexp (beg end regexp &optional group spacing repeat)
  (align-regexp (region-beginning) (region-end) "\\(\\s-*\\)&" 1 1 nil)
  (mark-paragraph)
  (align-regexp (region-beginning) (region-end) "\\(\\s-*\\)[+=]" 1 1 nil))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.