LaTeX / AUCTeX itemize ortamlarındaki öğelere girintiler nasıl yapılır?


17

S: LaTeX itemizeortamlarının "uygun" girintisini nasıl alabilirim auctex?

Burada itembir itemizeortamda olmak istiyorum :

  • \item satır çevrenin başlangıcına göre iki boşluk girintilidir
  • öğedeki devam çizgileri, \itemçizgiye göre iki boşluk daha girintili

Ben görmek istiyorum / beklemek budur:

\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}

Öğenin başlangıçtaki girintisini, LaTeX-item-indentvarsayılan olan değişkenle ayarlayabilirsiniz -2. Bu varsayılan ile, istenmeyen davranış almak \itemoyulmuştur değil, ama bunu ek iki boşluk aracılığı ile dengelenmiştir devam hatlarının istenilen davranışı elde:

\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}

Ayar LaTeX-item-indentiçin 0Beni istenen girinti alır \itemhattı (iki boşluk), ancak etmez olmayan ek bir iki boşluk aracılığı ile dengelenmiştir bana devam hatlarının istenilen davranışı ikinci yarısını almak:

\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}

Peki: kişi istenen her iki davranışı nasıl elde eder :

  • \itemçizginin ilk girintisi iki boşluk ve
  • devam hatları ek iki boşluk girintili?

( İlgili SO iş parçacığına dikkat edin .)


2
Birkaç gündür bu sorunla uğraşıyorum; ilk yönteminiz de 4 olarak ayarlarsanız çalışır LaTeX-indent-level. Öğeler 4 - 2 = 2 olarak girilir ve devam satırları 4 = 2 + 2 olarak girilir. Ancak bu, dosyadaki diğer tüm ortamların girintili olacağı anlamına gelir. 4 (ve 2 değil), ki bu arzu edilebilir veya olmayabilir. Ben 2 kendileri girintili tercih ediyorum, bu nerede sıkışmış.
sykora

LaTeX-indent-environment-listGirinti için özel bir işlev özelleştirmeyi ve eklemeyi denediniz mi? İşlev LaTeX-indent-tabularmakul bir başlangıç ​​noktası sağlayabilir (veya en azından bir ortamda özelleştirilmiş girintinin makul bir örneğini). Bu değişkene / işleve rastladım, bu yüzden kendime bakma şansım olmadı.
zroth

Yanıtlar:


14

@ sykora hakkındaki yorum (setq LaTeX-item-indent -2 LaTeX-indent-level 4)neredeyse var, ama bu her ortama da yayıldığımız anlamına geliyor. Yani, örneğin, biz de:

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

Aşağıdaki işlev, Tassilo Horn'tan eski (ve görünüşte bozuk?) Bir kod snippet'i oluşturur . Yuvalanmış ortamlar da dahil olmak üzere girintiyi doğru hale getirir. Önyükleme için itemize, enumerateve descriptionortamlarda çalışır :

(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)))

Yardım edemiyorum ama eksik olduğum çok basit bir ayar olduğunu hissediyorum ve bu Rube Goldberg versiyonu. Yine de çalışıyor ve yıllardır yaşadığım bir kaşıntı çiziyor .

EDIT: @ sykora yorum yanıt olarak, sabit kodlama çıkarmak için işlevi revize. \itemŞimdi girintili LaTeX-indent-levelalanlar. Devam çizgileri yeni bir değişkenin değerini alabilir LaTeX-indent-level-item-continuationveya ikincisini bağlamak istemiyorsanız, değerinin iki katı olabilir LaTeX-indent-level.

Olduğu gibi, bağlanma ve LaTeX-indent-level-item-continuation8'e ayarlanması estetik açıdan hoş sonuçlar verir. Hatta ona geçebilirim:

\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}

Bu sabah bakarak biraz zaman geçirdim, ama başka bir şeye odaklanmalıydım. Bence 3060. satır latex.el- (+ (LaTeX-indent-calculate-last force-type) LaTeX-item-indent))girinti seviyesine katkıda bulunuyor.
hukukçu

Ben sadece bir test sürüşü için aldı ve oldukça iyi performans gibi görünüyor - teşekkürler! Mümkünse, biriyle kodlanmış 2s yerine geçebilecek LaTeX-indent-levelveya yeni bir değişken - LateX-item-continuation-indent?
sykora

@sykora: iyi bir öneri! Anonim.
Dan

Sık sık bir TeXer olarak, bu harika . Gerçekten her zaman beni rahatsız etti! Teşekkürler :)
Sean Allred

Burada hangi sarma modunu kullanıyorsunuz? Her çizgiyi temizlerim. Bkz. İ61.tinypic.com/eq8n7b.jpg
NVaughan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.