我们正在将课程幻灯片从 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
这是一个忽略标签的问题。然而,上面的方法有效