You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Beamer与lstlisting包时引号引发编译失败的解决方法

解决Beamer中tcolorbox嵌套lstlisting时双引号导致的编译失败问题

问题分析

在Beamer幻灯片的tcolorbox环境内使用lstlisting插入包含双引号的R代码(如read.csv("c://path"))时,pdflatex编译会失败,移除双引号则可正常编译。这是因为嵌套环境下,双引号触发了LaTeX的特殊字符解析冲突,即便帧已添加[fragile]选项,仍无法完全规避该问题。

解决方案

推荐两种可靠的解决方式:

方案1:使用tcblisting环境

tcolorbox原生提供了tcblisting环境,是专门为代码展示设计的结合方案,能更好处理代码中的特殊字符,避免编译冲突。使用前需加载tcolorbox的listings库。

修改后的代码片段:

\begin{frame}[fragile]
\frametitle{Title}
\begin{itemize}
\item Item 1
\end{itemize}
\begin{tcblisting}{colback=red!5,colframe=red!75!black,title=Reading in a .csv File,listing only}
read.csv("c://test")
\end{tcblisting}
\end{frame}

方案2:给tcolorbox添加fragile选项

若坚持使用tcolorbox嵌套lstlisting的方式,给tcolorbox添加fragile选项,确保环境内的特殊字符被正确解析:

修改后的代码片段:

\begin{frame}[fragile]
\frametitle{Title}
\begin{itemize}
\item Item 1
\end{itemize}
\begin{tcolorbox}[fragile,colback=red!5,colframe=red!75!black,title=Reading in a .csv File]
\lstset{tabsize=2}
\begin{lstlisting}
read.csv("c://test")
\end{lstlisting}
\end{tcolorbox}
\end{frame}

完整可编译代码示例(采用tcblisting方案)

\documentclass[]{beamer}
\usepackage{colortbl} 
\usepackage{bm}
\usepackage{color}
\usepackage{amssymb,amsmath}
\usepackage{mathtools} 
\usepackage{float}
\usepackage{algorithm}
\usepackage[noend]{algpseudocode}
\usepackage{listings}
\lstset{basicstyle=\ttfamily} 
\usepackage{tcolorbox}
\tcbuselibrary{listings} % 加载tcolorbox的listings库以支持tcblisting
\usepackage{graphicx}
\usepackage{fancybox}
\usepackage{hyperref}
% R代码格式设置
\lstset{language=R,
    basicstyle=\small\ttfamily,
    stringstyle=\color{DarkGreen},
    otherkeywords={0,1,2,3,4,5,6,7,8,9},
    morekeywords={TRUE,FALSE},
    deletekeywords={data,frame,length,as,character},
    keywordstyle=\color{blue},
    commentstyle=\color{DarkGreen},
    xleftmargin=.0in,
    breaklines=true,
    xrightmargin=.25in
}
\newcommand{\qq}{\symbol{34}}

%\documentclass[handout]{beamer}
\mode<handout>
{
  \usetheme{default}
}
\mode<presentation>
{
  \usetheme{Madrid}
  %\usetheme{default}
}
\usepackage[english]{babel}
\usepackage[latin1]{inputenc}
%\usepackage{SweaveSlides}
\usepackage{bm}
\usepackage{graphicx}
\usefonttheme[onlymath]{serif}
%\logo{\includegraphics[width=3cm]{logo.jpeg}}
\title{Title}
\author {Name\\Place}
\institute[Place]{
  }
\date[Test]{Test}
\subject{OP}
\AtBeginSubsection[]%
{
  \begin{frame}<beamer>
    \frametitle{Outline}
    \tableofcontents[currentsection,currentsubsection]
  \end{frame}
}
\begin{document}
\begin{frame}
  \titlepage
  \end{frame}

\begin{frame}[fragile]
\frametitle{Title}
\begin{itemize}
\item Item 1
\end{itemize}
\begin{tcblisting}{colback=red!5,colframe=red!75!black,title=Reading in a .csv File,listing only}
read.csv("c://test")
\end{tcblisting}
\end{frame}

\end{document}

内容的提问来源于stack exchange,提问作者dhc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 13:40:28