如何控制代码中的缩进

如何控制代码中的缩进

我有一段 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}

在此处输入图片描述

相关内容