ラテックスモードでの複数行の方程式と表の整列


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}

それはほとんどそこに到達ますが、完全ではありません。違いは明らかです。
また、を削除することにした場合\phialign-current単に奇妙なことを行います:

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

align-current希望する効果を得るために他の何かをカスタマイズしたり使用したりする方法はありますか?


1
私は現在、適切な答えを書くために私のコンピューターにいません。ただし、その領域を選択してalign-regexp、整列する文字の正規表現を使用および提供できます+|=。これらの文字の一部をエスケープする必要がある場合があります。
カウシャルモディ14

実際に入力する正規表現はです[+=]。しかし、それはあなたが望むものを正確に与えません。.に&沿って整列しません+
カウシャルモディ14

回答:


6

必要な結果は、2013年10月以降のAUCTeX機能です。これは現在のリリース(11.87)にはまだありません。あなたがしなければならないのは、地域をマークしてヒットすることTABです。LaTeX-hanging-ampersand-positionインデントの実装方法を確認してください。


OK、TABは確かに動作します!gitリポジトリをパッケージにするにはどうすればよいですか?うまくインストールできました。しかし、auctexに依存するelpaパッケージがありmake install、git repoからの呼び出しでは「auctex」パッケージが定義されていないようで、他のパッケージは初期化に失敗します。
マラバルバ14年

(require 'tex-site)make install完了後は十分です。
abo-abo 14年

@ abo-aboこれはauctexを有効にしますが、package.elはまだそれを認識しません。いずれにせよ、ElpaからAuctexをインストールし、-pkgファイル以外のすべてをインストールディレクトリから削除することでこれを回避しました。
マラバルバ14年

4

方程式の\ beginと\ endの間に空白行がないと仮定すると、カーソルが\ begin- \ 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.