LaTeX / AUCTeX में वस्तुओं को इंडेंट कैसे करें वातावरण को आइटम करें?


17

प्रश्न: मैं एलईटीएक्स itemizeवातावरण में "उचित" इंडेंटेशन कैसे प्राप्त कर सकता हूं auctex?

यहाँ मैं itemएक itemizeवातावरण में रहना चाहता हूँ :

  • \item लाइन पर्यावरण की शुरुआत के सापेक्ष दो रिक्त स्थान है
  • आइटम में निरंतरता रेखाएं \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

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

इसलिए: किसी को दोनों वांछित व्यवहार कैसे मिलते हैं:

  • \itemलाइन दो स्थानों के प्रारंभिक इंडेंट , और
  • निरंतरता अतिरिक्त दो रिक्त स्थान को इंगित करती है?

(नोट संबंधित एसओ धागा ।)


2
मैं कुछ घंटों के लिए इस सटीक मुद्दे के साथ खिलवाड़ कर रहा हूं; आपका पहला तरीका काम करता है यदि आप भी LaTeX-indent-level4 पर सेट करते हैं। आइटम 4 - 2 = 2 के लिए इंडेंट होंगे और निरंतरता रेखाएं 4 = 2 + 2. से इंडेंट होंगी। हालांकि, इसका मतलब यह है कि फाइल में हर दूसरे पर्यावरण के लिए इंडेंट किया जाएगा 4 (और 2 नहीं), जो वांछनीय हो सकता है या नहीं भी हो सकता है। मैं नहीं बल्कि वे खुद 2 पर इंडेंट होंगे, जहाँ मैं फंस गया हूँ।
19

क्या आपने LaTeX-indent-environment-listइंडेंटेशन के लिए कस्टम फ़ंक्शन को कस्टमाइज़ और जोड़ने का प्रयास किया ? फ़ंक्शन LaTeX-indent-tabularएक उचित प्रारंभिक बिंदु प्रदान कर सकता है (या कम से कम एक पर्यावरण के भीतर अनुकूलित इंडेंटेशन का एक उचित उदाहरण)। मैं बस इस चर / समारोह में ठोकर खाई थी, इसलिए मुझे इसे स्वयं देखने का मौका नहीं मिला।
zroth

जवाबों:


14

@ सिकोरा की टिप्पणी (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 हॉर्न से एक पुराना (और प्रतीत होता है टूट?) कोड स्निपेट बनाता है । यह नेस्टेड वातावरण सहित इंडेंटेशन को सही करता है। यह के लिए काम करता है itemize, enumerateऔर descriptionवातावरण, बूट करने के लिए:

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

मैं मदद नहीं कर सकता, लेकिन यह महसूस कर सकता हूं कि एक बहुत ही सरल सेटिंग है जो मुझे याद आ रही है और यह रुब गोल्डबर्ग संस्करण है। फिर भी, यह काम करता है, और यह एक खुजली को खरोंच करता है जो मैंने वर्षों से किया है

संपादित करें: @ सिकोरा की टिप्पणी के जवाब में, मैंने हार्ड कोडिंग को पूरा करने के लिए फ़ंक्शन को संशोधित किया है। \items अब इंडेंट किए गए LaTeX-indent-levelस्थान हैं। निरंतरता लाइनें एक नए चर का मान ले सकती हैं LaTeX-indent-level-item-continuation, या, यदि आप उत्तरार्द्ध को बांधना नहीं चाहते हैं, तो दो बार का मूल्य LaTeX-indent-level

जैसा कि होता है, बाध्यकारी और LaTeX-indent-level-item-continuation8 से सेटिंग सौंदर्य-सुखदायक परिणाम देती है। मैं इसे भी स्विच कर सकता हूं:

\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))इंडेंट के स्तर पर योगदान कर रही है।
21

मैंने इसे बस एक परीक्षण सवारी के लिए लिया, और यह बहुत अच्छा प्रदर्शन करने के लिए लगता है - धन्यवाद! यदि संभव हो, तो आप हार्ड-कोडेड 2s को या तो LaTeX-indent-levelएक नए चर के साथ बदल सकते हैं - LateX-item-continuation-indent?
sykora

@sykora: अच्छा सुझाव! शामिल।
दान

एक लगातार TeXer के रूप में, यह शानदार है । यह वास्तव में हमेशा मेरे साथ है! धन्यवाद :)
शॉन एलेड

आप यहाँ किस रैपिंग मोड का उपयोग कर रहे हैं? मैं हर लाइन छोड़ दिया flushed मिलता है। देखें i61.tinypic.com/eq8n7b.jpg
NVaughan
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.