如何创建带有可复制源代码的投影仪幻灯片?

如何创建带有可复制源代码的投影仪幻灯片?

我们正在将课程幻灯片从 Powerpoint 转换为 LaTeX,以便能够以更开放的格式提供所有代码,并让学生轻松地从幻灯片中复制代码。然而,后者似乎不起作用:LaTeX 或 listings 或 beamer 将所有代码转换为更漂亮的字符,这些字符无法再复制。考虑这个 LaTeX 代码:

\documentclass{beamer}

\usepackage{listings}

\begin{document}

\lstset{breakatwhitespace=true,
language=C++,
columns=fullflexible,
keepspaces=true,
breaklines=true,
tabsize=3, 
showstringspaces=false,
extendedchars=true}

\begin{frame}[fragile]
\begin{lstlisting}
const char *processing() const{
    somestring = "-1";
}
\end{lstlisting}
\end{frame}

\end{document}

从 OSX Preview 中打开的 PDF 复制代码将导致出现特殊星号、特殊引号甚至不同的减号。如何避免这种情况?我们如何确保所有代码都可以立即按原样复制?

还是 PDF 查看器的问题?那么,为了确保代码可以复制,我们应该将 LaTeX 渲染为哪种格式:HTML?

答案1

使用\defverbatim[...]\command定义:

\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage{cmap}
\usepackage[utf8]{inputenc}
\usepackage{listings}
\lstset{breakatwhitespace,
language=C++,
columns=fullflexible,
keepspaces,
breaklines,
tabsize=3, 
showstringspaces=false,
extendedchars=true}

\begin{document}
\defverbatim[colored]\lst{%
\begin{lstlisting}[tabsize=8,basicstyle=\ttfamily]
const char *processing() const{
    somestring = "-1";
}
\end{lstlisting}
}

\begin{frame}
\lst
\end{frame}

\end{document}

beamer这是一个忽略标签的问题。然而,上面的方法有效

相关内容