我想使用 在演示文稿幻灯片上显示我的 C# 代码片段beamer
。由于代码很长,我使用框架选项将框架设置为可拆分allowframebreaks
。现在代码可以在多个框架中显示。不幸的是,原始源中的制表符对齐不再保留。
\documentclass[dvipsnames,cmyk]{beamer}
\usepackage{listings}
\lstset%
{%
language=[Sharp]C,
backgroundcolor=\color{Black},
basicstyle=\color{White}\tiny\ttfamily,
keywordstyle=\color{Orange},
identifierstyle=\color{Cyan},
stringstyle=\color{Red},
commentstyle=\color{Green},
breaklines=true,
breakatwhitespace=true,
tabsize=10,
showstringspaces=false%
}
\begin{document}
\begin{frame}[allowframebreaks,fragile]{MyListing}
\begin{lstlisting}
using System;
publid delegate void Foo(object o);
public class Program: object
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World");//This is a comment.
/*This is a comment too.*/
}
public static void PSTricks(this object)
{
Say("I Love PSTricks!");
Say("I Love PSTricks!");
Say("I Love PSTricks!");
Say("I Love PSTricks!");
}
public static void LaTeX(this object)
{
Say("I Love LaTeX too!");
Say("I Love LaTeX too!");
Say("I Love LaTeX too!");
Say("I Love LaTeX too!");
}
public void Say(System.String message)
{
System.Text.StringBuilder sb=new System.Text.StringBuilder();
sb.Append(messange);
Console.WriteLine(sb);
}
}
\end{lstlisting}
\end{frame}
\end{document}
编辑1:
这种不良行为仅发生在内联包含中。
如下图所示,从外部文件进行包含的效果很好。
答案1
这行不通,因为易碎材料必须写入外部临时文件,然后由投影仪读回。标签在这里丢失了。请按如下方式使用:
\documentclass[dvipsnames,cmyk]{beamer}
\usepackage{listings}
\begin{document}
\defverbatim[colored]\Lst{%
\begin{lstlisting}[tabsize=2,showtabs,frame=single]
using System;
publid delegate void Foo(object o);
\end{lstlisting}}
\begin{frame}[allowframebreaks]{MyListing}
\Lst
\end{frame}
\end{document}
顺便说一句:请提供最小例子 ... ;-)