将代码插入到乳胶文档中,无需前导制表符

将代码插入到乳胶文档中,无需前导制表符

当我编写 latex 时,我通常会像这样缩进我的部分(它允许更容易地在 vim 中折叠,就像阅读代码等一样)。

section{section}

    bla bla bla bla bla

    subsection{a}

        bla bla bla bla bla

    subsection{b}

        bla bla bla bla bla

问题是,当我将代码(见下文)插入文档时,如果我将所有代码缩进 3 个制表符,那么文档中也会缩进 3 个制表符。我想保留相对缩进,但我不想要额外的三个制表符缩进。

例如这种乳胶:

    subsection{a}

        bla bla bla bla bla
    \begin{lstlisting}
    public static void main(String [] args){
        bla bla
    }
    \end{lstlisting}

生成:

A

啦啦啦啦啦

            /* code is indented 3 tabs */
            public static void main(String [] args){
                bla bla
            }

我希望它能产生:

A

啦啦啦啦啦

public static void main(String [] args){
    bla bla
}

这是负责代码格式化的代码(感谢云雾缭绕)。

\usepackage{listings}
\usepackage{color}

\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\lstset{frame=tb,
  language=Java,
  aboveskip=3mm,
  belowskip=3mm,
  showstringspaces=false,
  columns=flexible,
  basicstyle={\small\ttfamily},
  numbers=none,
  numberstyle=\tiny\color{gray},
  keywordstyle=\color{blue},
  commentstyle=\color{dkgreen},
  stringstyle=\color{mauve},
  breakatwhitespace=true
  tabsize=3
}

答案1

不是一个很好的解决方案(自动是理想的),但是这是有效的:

使用gobble-setting 从开始删除字符。

例子

从开始处删除两个制表符 (= 8 个空格):

\begin{lstlisting}[gobble=8]

答案2

您说的“它使在 Vim 中折叠更容易”是什么意思?您是否在编写 LaTeX 并使用缩进来在 Vim 中进行折叠?这似乎不是最佳方法。

更好的方法是使用 Vim LaTeX-Suite 插件,它可以让您自动折叠各个部分,而不管它们是如何缩进的。此外,它还有许多其他好处。 http://vim-latex.sourceforge.net/

答案3

您可以使用verbatim代替lstlistingverbatim忽略制表符但不忽略空格。如果使用verbatim,请使用制表符表示要忽略的缩进,并使用空格表示要保留的缩进。

以下是示例。为了便于阅读,本示例中的制表符用 表示____,空格用 表示·

subsection{a}
____bla bla bla bla bla
____\begin{verbatim}
____public static void main(String [] args){
____····bla bla
____}
____\end{verbatim}

结果:

A

啦啦啦啦啦

public static void main(String [] args){
    bla bla
}

相关内容