当我编写 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
代替lstlisting
。verbatim
忽略制表符但不忽略空格。如果使用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 }