Căn chỉnh các phương trình và bảng nhiều lớp trong chế độ latex


12

Giả sử tôi đang chỉnh sửa một latex ở chế độ latex của Auctex và tôi có phương trình sau.
Đây chỉ là thụt lề với indent-region.

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

Căn chỉnh ở trên là những gì tôi nhận được nếu tôi chọn mọi thứ và nhấn TAB, nghĩa là, nếu tôi chỉ sử dụng indent-region.

Những gì tôi muốn nhận là như sau:
Lưu ý cách + c + dcăn chỉnh với văn bản sau dấu &. Điều này sẽ có ý nghĩa nhất, vì + c + dlà một phần của cùng một "cột" như = a + b.

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

Dưới đây là những gì tôi nhận được nếu tôi gọi align-current.

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

gần như đạt được điều đó, nhưng không hoàn toàn. Sự khác biệt là rõ ràng.
Ngoài ra, nếu tôi quyết định loại bỏ \phi, hãy align-currentlàm điều gì đó đơn giản kỳ quái:

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

Có cách nào tôi có thể tùy chỉnh align-currenthoặc sử dụng cái gì khác để có được hiệu quả mong muốn không?


1
Tôi không ở máy tính của tôi hiện đang viết một câu trả lời thích hợp. Nhưng bạn có thể chọn khu vực đó và sử dụng align-regexpvà cung cấp biểu thức chính của các ký tự bạn muốn căn chỉnh +|=. Bạn có thể phải thoát khỏi một số các nhân vật.
Kaushal Modi

Regex bạn nhập là thực sự [+=]. Nhưng nó sẽ không cung cấp chính xác những gì bạn muốn .. nó sẽ không phù hợp &với +.
Kaushal Modi

Câu trả lời:


6

Kết quả mà bạn muốn đã là một tính năng AocateeX kể từ tháng 10 năm 2013 . Điều này vẫn chưa có trong bản phát hành hiện tại (11.87). Tất cả bạn phải làm là đánh dấu khu vực và nhấn TAB. Xem LaTeX-hanging-ampersand-positioncách thực hiện thụt đầu dòng.


Ok, TAB thực sự hoạt động! Bây giờ làm thế nào để tôi biến git repo thành một gói? Tôi quản lý để cài đặt nó tốt. Nhưng tôi có các gói elpa phụ thuộc vào auctex và dường như việc gọi make installtừ git repo dường như không định nghĩa gói "auctex" để các gói khác không khởi tạo được.
Malabarba

(require 'tex-site)nên đủ sau khi make installđã hoàn thành.
abo-abo

@ abo-abo Điều đó kích hoạt auctex, nhưng pack.el vẫn không thấy nó cho tôi. Trong mọi trường hợp, tôi đã khắc phục điều này bằng cách cài đặt Auctex từ Elpa và chỉ xóa mọi thứ trừ -pkgtệp khỏi thư mục cài đặt của nó.
Malabarba

4

Giả sử rằng bạn không có bất kỳ dòng trống nào giữa \ start và \ end của phương trình, bạn có thể gọi hàm này trong khi con trỏ của bạn ở bất cứ đâu trong khu vực \ started- \ 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))
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.