我想使用简单的示例环境清单用于打印 C 代码片段的包,如下所示
\begin{example}
\lstinputlisting[caption=Hello.c]{../C/hello.c}
\end{example}
除了选定的字体外,这个方法效果很好。我用的是
\lstset{basicstyle=footnotesize\ttfamily}.
但是,如下图所示,它与所选形状不匹配。似乎所选的字体形状在示例环境中具有更高的优先级。如何在示例环境中正确设置与 \lstset 命令匹配的代码片段的字体形状。
注意:我使用捷克语:Příklad = 示例
微电子工程协会
\documentclass[12pt,a4paper]{scrbook}
\usepackage{amsthm}
\usepackage{xltxtra}
\usepackage{listings}
\newtheorem{example}{Příklad}
\begin{document}
\lstset{ %
language=C, % choose the language of the code
basicstyle=\footnotesize\ttfamily, % the size of the fonts that are used for the code
}
\begin{example}
text text text
\begin{lstlisting}
#include <stdio.h>
int main(void)
{
int c;
while ((c = getchar()) != EOF)
putchar(c);
return 0;
}
\end{lstlisting}
\end{example}
\end{document}
答案1
example
包中的环境将amsthm
内容排版为斜体。在内部,这可能是通过\itshape
在示例开头调用来完成的。现在,当您创建列表时,样式选项\footnotesize\ttfamily
已添加,但\itshape
仍然处于“活动”状态。例如:
\documentclass{article}
\begin{document}
test \itshape test \ttfamily test \upshape test
\end{document}
在您的示例中也发生了相同的事情:周围的文本位于\itshape
,因此添加\ttfamily
会在您的斜体打字机字体。要获得直立的打字机字体,您必须将其添加\upshape
到列表样式中,如上例所示。
因此,你的 MWE 变成
\documentclass[12pt,a4paper]{scrbook}
\usepackage{amsthm}
\usepackage{xltxtra}
\usepackage{listings}
\newtheorem{example}{Příklad}
\begin{document}
\lstset{ %
language=C, % choose the language of the code
basicstyle=\footnotesize\upshape\ttfamily, % the size of the fonts that are used for the code
}
\begin{example}
text text text
\begin{lstlisting}
#include <stdio.h>
int main(void)
{
int c;
while ((c = getchar()) != EOF)
putchar(c);
return 0;
}
\end{lstlisting}
text text text
\end{example}
\end{document}
结果如您所愿,以直立的打字机字体显示了列表: