为什么这个列表命令不断给我这个错误?

为什么这个列表命令不断给我这个错误?
\documentclass[titlepage]{article}
\author{foobar}
\title{foofoofoo}
\usepackage{syntonly}
\usepackage{verbatim}
\usepackage{lipsum}
\usepackage{listings}
\begin{document}
\maketitle
\newpage
\tableofcontents
\newpage
\lstset{basicstyle=\texttt} %THIS LINE
\section{Source Code}
I will admit that this code is {\it messy}.
\subsection{foo.c}
\lstinputlisting{foo.c}
\end{document}

我不明白为什么该行pdflatex无法编译;当我删除它时,一切都正常。

它给了我这个:

! Incomplete \ifmmode; all text was ignored after line 

答案1

由于\texttt是需要参数的命令,因此在listings逐字模式下它不会找到奇怪的字符等。无法将逐字代码作为参数提供给另一个命令。这就是\texttt{...}必须失败的原因。

为了实现typewriter字体,使用\ttfamily切换到此字体。请注意,这是一个持久的开关(直到应用另一个开关),而\texttt{...}仅持续到{...}- 分隔的参数。

\documentclass[titlepage]{article}
\author{foobar}
\title{foofoofoo}
\usepackage{syntonly}
\usepackage{verbatim}
\usepackage{lipsum}
\usepackage{listings}
\begin{document}
\maketitle
\newpage
\tableofcontents
\newpage
\lstset{basicstyle=\ttfamily} %THIS LINE
\section{Source Code}
I will admit that this code is {\textit{messy}}.
\subsection{foo.c}
\lstinputlisting{foo.c}
\end{document}

foo.c

#include <stdio.h>

int main( int argc, char **argv)
{
  printf("Hello World!\n");
  return(0);
}

在此处输入图片描述

相关内容