我想保持文档的所有字体相同,只将 llstststing 环境的字体更改为合理的字体,例如IBM Plex 单声道,Adobe 源代码专业版, 或者诺托无单色。这可能吗?如何可能?
梅威瑟:
\documentclass{article}
\usepackage[english]{babel}
\usepackage{blindtext}
\usepackage{plex-mono}
\usepackage[table,xcdraw]{xcolor}
\definecolor{backcolour}{rgb}{0.98,0.98,0.95}
\usepackage{listings}
\lstdefinestyle{prettycode}{
backgroundcolor=\color{backcolour},
aboveskip={0.9\baselineskip},
keepspaces=true,
}
\lstset{style=prettycode}
\begin{document}
\section{Section One}
\blindtext
\begin{lstlisting}[language=c, caption=Hello world program., label=listing:hello_world]
#include <stdio.h>
int main()
{
// prints hello world
printf("Hello World");
return 0;
}
\end{lstlisting}
\subsection{Subsection}
\blindtext
\end{document}
相关,但解决方案似乎会改变整个文档的打字机字体:设置 lstlisting 的字体系列
答案1
我不会对同一文档的不同部分使用不同的等宽字体。
然而,只要你深入研究一下字体包,你就可以做你想做的事。
IBM Plex Mono
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[table,xcdraw]{xcolor}
\usepackage{listings}
\definecolor{backcolour}{rgb}{0.98,0.98,0.95}
\newcommand{\listingsttfamily}{\fontfamily{IBMPlexMono-TLF}\small}
\lstdefinestyle{prettycode}{
basicstyle=\listingsttfamily,
backgroundcolor=\color{backcolour},
aboveskip={0.9\baselineskip},
keepspaces=true,
}
\lstset{style=prettycode}
\begin{document}
\section{Section One}
Some text with a \texttt{monospaced} insert.
\begin{lstlisting}[language=c, caption=Hello world program., label=listing:hello_world]
#include <stdio.h>
int main()
{
// prints hello world
printf("Hello World");
return 0;
}
\end{lstlisting}
\end{document}
源代码专业版
\listingsttfamily
用以下行替换
\newcommand{\listingsttfamily}{\fontfamily{SourceCodePro-TLF}\small}
诺托无单色
用以下行替换
\newcommand{\listingsttfamily}{\fontfamily{NotoSansMono-TLF}\small}
但请注意,这没有斜体也没有倾斜的形状。