假设我希望能够写:
\inline{some code or keyword}
并将其与段落文本的其余部分区分开来,我这样做是这样的:
\def\inline{\lstinline[basicstyle=\ttfamily]}
但是,如果您有一个自定义\lstset
设置,例如keywordstyle
,这也将用于内联!有没有办法删除它?是否可以使用类似的东西\lstnewenvironment
来实现它?
答案1
您可以keywordstyle
根据具体情况进行覆盖\lstinline
:
\documentclass{article}
\usepackage{listings,xcolor}
\lstset{keywordstyle=\sffamily\color{red},language=C}
\def\inline{\lstinline[basicstyle=\ttfamily,keywordstyle={}]}
\begin{document}
Compare \lstinline|int a=3;| with red sans-serif keywords to
\inline{int a=3;} where keywords inherit from basicstyle.
\end{document}
答案2
另一种选择是使用 来\lst@ifdisplaystyle\ ... \fi
定义不同keywordstyle
的lstinline
和lstlisting
。
\documentclass{article}
\usepackage{listings,xcolor}
\makeatletter
\lstset{
language=C,
basicstyle=\ttfamily,
keywordstyle=\lst@ifdisplaystyle\color{blue}\fi,
commentstyle=\color{gray}
}
\makeatother
\begin{document}
\begin{lstlisting}
int a=3; // blue keyword in a lstlisting evironment
\end{lstlisting}
Inline listings are still black: \lstinline{int a=3;}.
\end{document}