LaTeX / AUCTeXアイテム化環境でアイテムをインデントする方法は?


17

Q:どのようにしてLaTeX itemize環境の「適切な」インデントを取得できauctexますか?

ここに私itemがいるitemize環境でありたい場所です:

  • \item 行は環境の先頭から2スペース分インデントされます
  • 項目における継続行はに対してさらに2つのスペースインデントされている\item行を

これは私が見たい/期待しているものです:

\begin{itemize}
  \item Here's a really long item in a LaTeX itemize environment;
    note how the *initial* item line is indented two spaces, and the
    continuation lines are indented another two spaces.
\end{itemize}

LaTeX-item-indent変数を使用してアイテムの初期インデントを調整できます。この変数のデフォルトは-2です。このデフォルトでは、私は、望ましくない行動を取得\itemインデントされていないが、私はやる、追加の二つの空間によって相殺されている継続行の所望の動作を得ます:

\begin{itemize}
\item Here's a really long item in a LaTeX itemize environment;
  note how the *initial* item line is *NOT* indented two spaces,
  but the continuation lines are indented two spaces.
\end{itemize}

設定LaTeX-item-indentするには、0私の上に所望のインデントを取得\itemライン(2つのスペースを)が、んではない私に、追加の二つの空間によって相殺されている継続行の所望の動作の後半を取得します:

\begin{itemize}
  \item Here's a really long item in a LaTeX itemize environment;
  note how the *initial* item line is indented two spaces, but the
  continuation lines are *NOT* indented an additional two spaces.
\end{itemize}

だから、どのように両方の望ましい動作を得るのですか:

  • 行の最初のインデント\item2スペース、および
  • インデントされた追加の2つのスペースの継続行?

関連SOスレッドに注意してください。)


2
私はこの問題を数時間いじっていました。あなたも設定している場合、あなたの最初の方法は、作品LaTeX-indent-level2 = 2と継続行は、しかし、これはファイル内の他のすべての環境はにインデントされることを意味している= 2 4 + 2にインデントされます- 4にインデントされます。4.アイテムに4(2ではなく)。これは望ましい場合と望ましくない場合があります。私は彼らが2でインデントされることを望みます、それは私が立ち往生しているところです。
sykora 14年

LaTeX-indent-environment-listインデント用のカスタム関数をカスタマイズして追加しようとしましたか?この関数LaTeX-indent-tabularは、妥当な出発点(または、少なくとも環境内でカスタマイズされたインデントの妥当な例)を提供する場合があります。私はこの変数/関数に出くわしたばかりなので、自分で調べる機会がありませんでした。
-zroth

回答:


14

@sykoraのコメント(setq LaTeX-item-indent -2 LaTeX-indent-level 4)はほぼそこにありますが、それは他のすべての環境にも波及することを意味します。したがって、たとえば、次のものもあります。

\begin{abstract}
    This indents to the 4th column, which is way too far!
\end{abstract}

次の関数は、Tassilo Hornからの古い(および壊れているように見える)コードスニペットを構築します。ネストされた環境を含め、インデントが正しく取得されます。、、および環境で動作しitemize、起動します。enumeratedescription

(defun LaTeX-indent-item ()
  "Provide proper indentation for LaTeX \"itemize\",\"enumerate\", and
\"description\" environments.

  \"\\item\" is indented `LaTeX-indent-level' spaces relative to
  the the beginning of the environment.

  Continuation lines are indented either twice
  `LaTeX-indent-level', or `LaTeX-indent-level-item-continuation'
  if the latter is bound."
  (save-match-data
    (let* ((offset LaTeX-indent-level)
           (contin (or (and (boundp 'LaTeX-indent-level-item-continuation)
                            LaTeX-indent-level-item-continuation)
                       (* 2 LaTeX-indent-level)))
           (re-beg "\\\\begin{")
           (re-end "\\\\end{")
           (re-env "\\(itemize\\|\\enumerate\\|description\\)")
           (indent (save-excursion
                     (when (looking-at (concat re-beg re-env "}"))
                       (end-of-line))
                     (LaTeX-find-matching-begin)
                     (current-column))))
      (cond ((looking-at (concat re-beg re-env "}"))
             (or (save-excursion
                   (beginning-of-line)
                   (ignore-errors
                     (LaTeX-find-matching-begin)
                     (+ (current-column)
                        (if (looking-at (concat re-beg re-env "}"))
                            contin
                          offset))))
                 indent))
             ((looking-at (concat re-end re-env "}"))
              indent)
            ((looking-at "\\\\item")
             (+ offset indent))
            (t
             (+ contin indent))))))

(defcustom LaTeX-indent-level-item-continuation 4
  "*Indentation of continuation lines for items in itemize-like
environments."
  :group 'LaTeX-indentation
  :type 'integer)

(eval-after-load "latex"
  '(setq LaTeX-indent-environment-list
         (nconc '(("itemize" LaTeX-indent-item)
                  ("enumerate" LaTeX-indent-item)
                  ("description" LaTeX-indent-item))
                LaTeX-indent-environment-list)))

私は行方不明になっている非常にシンプルな設定があり、これがRube Goldbergバージョンであると感じずにはいられません。それでも、それは動作しますが、それは私が持っていたかゆみ傷

編集: @sykoraのコメントに応えて、ハードコーディングを削除するために関数を修正しました。 \itemsはインデントされたLaTeX-indent-levelスペースになりました。継続行は、新しい変数の値を取ることができます。LaTeX-indent-level-item-continuationまたは、後者をバインドしたくない場合は、値の2倍にしますLaTeX-indent-level

偶然にも、バインドしLaTeX-indent-level-item-continuationて8に設定すると、見た目に美しい結果が得られます。私もそれに切り替えるかもしれません:

\begin{itemize}
  \item Example with LaTeX-indent-level-item-continuation set to 8.
  \item Here's a really long item that will spill over onto the
        continuation line; text lines up pretty nicely this way!
        \begin{itemize} 
          \item And here's a sub-item, with the environment
                indented to the relevant continuation line.
        \end{itemize}
\end{itemize}

今朝は少し時間をかけて見ましたが、何か他のものに集中する必要がありました。行3060のlatex.el-つまり(+ (LaTeX-indent-calculate-last force-type) LaTeX-item-indent))-がインデントのレベルに寄与していると思います。
法律家14年

私は試乗のためにそれを取りましたが、それはかなりうまくいくようです-ありがとう!可能であれば、ハードコードされた2をいずれかLaTeX-indent-levelまたは新しい変数に置き換えることができます- LateX-item-continuation-indent
sykora 14年

@sykora:良い提案!組み込まれています。
ダン

頻繁なTeXerとして、これは素晴らしいです。それは本当に私を常に悩ませています!ありがとう:)
ショーン・オールレッド14年

ここではどのラッピングモードを使用していますか?すべての行を左にフラッシュします。参照してくださいi61.tinypic.com/eq8n7b.jpg
NVaughan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.