简体   繁体   English

Emacs 中的 LaTeX 缩进(格式化)

[英]LaTeX indentation (formatting) in Emacs

what is the correct way to do indentation of a LaTeX document in Emacs (AucTex)?在 Emacs (AucTex) 中缩进 LaTeX 文档的正确方法是什么?

For example when I have a list:例如,当我有一个列表时:

\begin{itemize}
\item orem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim urna, mattis eu aliquet eget, condimentum id nibh. In hac habitasse platea dictumst.
\item orem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim urna, mattis eu aliquet eget, condimentum id nibh. In hac habitasse platea dictumst.
\end{itemize}

and would like to ended up with:并希望以:

\begin{itemize}
  \item orem ipsum dolor sit amet, consectetur
    adipiscing elit. Aliquam enim urna, mattis eu aliquet eget,
    condimentum id nibh. In hac habitasse platea dictumst.
  \item orem
    ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim
    urna, mattis eu aliquet eget, condimentum id nibh. In hac
    habitasse platea dictumst.
\end{itemize}

I tried indent-region but it doesn't do anything and the LaTeX-fill-* produces weird results like:我试过indent-region但它没有做任何事情并且LaTeX-fill-*会产生奇怪的结果,例如:

\begin{itemize} \item orem ipsum dolor sit amet, consectetur
  adipiscing elit. Aliquam enim urna, mattis eu aliquet eget,
  condimentum id nibh. In hac habitasse platea dictumst. \item orem
  ipsum dolor sit amet, consectetur adipiscing elit. Aliquam enim
  urna, mattis eu aliquet eget, condimentum id nibh. In hac
  habitasse platea dictumst. \end{itemize}

Thanks!谢谢!

Are you sure you have installed AUCTeX correctly?您确定您已正确安装 AUCTeX 吗? AUCTeX's LaTeX mode is called LaTeX-mode , while latex-mode is the (lame) Emacs default. AUCTeX 的 LaTeX 模式称为LaTeX-mode ,而latex-mode是(蹩脚的)Emacs 默认模式。 Check the current major mode with Ch m .使用Ch m检查当前的主要模式。

When I place the cursor at the beginning of the environment and press Cc Cq Ce ( LaTeX-fill-environment ), I get the following:当我将光标放在环境的开头并按Cc Cq CeLaTeX-fill-environment )时,我得到以下信息:

\begin{itemize}
\item orem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam
  enim urna, mattis eu aliquet eget, condimentum id nibh. In hac
  habitasse platea dictumst.
\item orem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam
  enim urna, mattis eu aliquet eget, condimentum id nibh. In hac
  habitasse platea dictumst.
\end{itemize}

List of AUCTeX fill commands: AUCTeX 填充命令列表:

  • Cc Cq Ce ( LaTeX-fill-environment ) Cc Cq Ce ( LaTeX-fill-environment )
  • Cc Cq Cp ( LaTeX-fill-paragraph ) Cc Cq Cp ( LaTeX-fill-paragraph )
  • Cc Cq Cr ( LaTeX-fill-region ) Cc Cq Cr ( LaTeX-fill-region )
  • Cc Cq Cs ( LaTeX-fill-section ) Cc Cq Cs ( LaTeX-fill-section )

You can also just press Mq ( fill-paragraph ) as you type.您也可以在键入时按Mq ( fill-paragraph )。

To get 2 spaces indentation:要获得 2 个空格缩进:

(setq LaTeX-item-indent 0)

(source ) 来源

You can fill environment automatically with:您可以使用以下命令自动填充环境:

(add-hook 'LaTeX-mode-hook 'turn-on-auto-fill)

( source ) 来源

I make extensive use of the following function, which I borrowed from Luca da Alfaro :我广泛使用了从Luca da Alfaro借来的以下函数:

(defun fill-sentence ()
  (interactive)
  (save-excursion
    (or (eq (point) (point-max)) (forward-char))
    (forward-sentence -1)
    (indent-relative)
    (let ((beg (point)))
      (forward-sentence)
      (if (equal "LaTeX" (substring mode-name (string-match "LaTeX" mode-name)))
          (LaTeX-fill-region-as-paragraph beg (point))
        (fill-region-as-paragraph beg (point))))))

This works outside AUCTeX too.这也适用于 AUCTeX 之外。 I bind it to Mj using:我使用以下方法将其绑定到Mj

(global-set-key "\ej" 'fill-sentence)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM