我有一段 Java 代码,我想将其添加到框架中。如何设置选项lstset
以确保 Beamer 保留代码中的原始缩进。例如,在下面的代码中,注释被推到左侧,甚至函数调用也bar()
被推到左侧。
\documentclass{beamer}
\usepackage{listings}
\usepackage{color}
\usepackage{lstautogobble}
\definecolor{pblue}{rgb}{0.13,0.13,1}
\definecolor{pgreen}{rgb}{0,0.5,0}
\definecolor{pred}{rgb}{0.9,0,0}
\definecolor{pgrey}{rgb}{0.46,0.45,0.48}
\lstset{language=Java
,showspaces=true
,showtabs=true
,showstringspaces=false
,tabsize=2
,commentstyle=\color{pgreen}
,keywordstyle=\color{pblue}
,stringstyle=\color{pred}
,basicstyle=\scriptsize\ttfamily
,breaklines=false
,resetmargins=false
,autogobble=true
}
\begin{document}
\begin{frame}[fragile]{foo}
\begin{lstlisting}
public static void main(String[] args)
{
System.out.println("Hello");
//comment 1
blah blah;
blah blah;
//comment 2
blah blah;
blah blah;
foo();
bar();
}
\end{lstlisting}
\end{frame}
\end{document}
答案1
Beamer 会将您的内联代码写入外部文件并再次读取。在此过程中,空格会丢失。
要修复此问题,请\defverbatim
按如下方式使用。
只是为了好玩的解决方案。
\documentclass{beamer}
\usepackage{listings}
\usepackage{color}
\usepackage{lstautogobble}
\definecolor{pblue}{rgb}{0.13,0.13,1}
\definecolor{pgreen}{rgb}{0,0.5,0}
\definecolor{pred}{rgb}{0.9,0,0}
\definecolor{pgrey}{rgb}{0.46,0.45,0.48}
\lstdefinestyle{java}
{
,language=Java
,showspaces=false
,showtabs=false
,showstringspaces=false
,tabsize=3
,commentstyle=\color{pgreen}
,keywordstyle=\color{pblue}
,stringstyle=\color{pred}
,basicstyle=\scriptsize\ttfamily
,breaklines=true
,resetmargins=false
,autogobble=false
}
\begin{document}
\defverbatim[colored]\Lst{%
\lstlisting[style=java]
public static void main(String[] args)
{
System.out.println("Hello");
//comment 1
blah blah;
blah blah;
//comment 2
blah blah;
blah blah;
foo();
bar();
}
\endlstlisting}
\begin{frame}[fragile]{foo}
\Lst
\end{frame}
\end{document}