我是否应该使用 \lstinline 作为文本中嵌入的语言关键字?

我是否应该使用 \lstinline 作为文本中嵌入的语言关键字?

在撰写有关编程语言的文章时,有一些示例可以格式化为列表。这很有效,并且会产生漂亮的结果。有时我想在文本中进一步提及列表中使用的关键字,就像declare我用粗体斜体表示的那样。

我试过了\lstinline,但它似乎只是逐字逐句地打印其参数,而不应用与列表中相同的文本格式。是否有其他机制可以排版常规文本中的关键字或简短片段,同时遵循中指定的相同语言格式\lstset

\documentclass[11pt,letterpaper]{book}
\usepackage[utf8]{inputenc}
\usepackage{listings}
\begin{document}

\lstset{frameround=fttt,language=SQL,numbers=left,breaklines=true}

\begin{lstlisting}[caption={SQL},label={lst:sql}]
declare @t table(
  id int
)
\end{lstlisting}

The above Listing \ref{lst:sql} demonstrates how to use \textbf{\textit{declare}} statement to create a table variable.

\end{document}

在此处输入图片描述

答案1

是的,我建议您使用,\lstinline以便应用相同的风格:

在此处输入图片描述

请注意,尽管出现格式相同,如果仔细观察,您会注意到中的关键字间距\lstinline与略有不同listings

原因是,\lstinline根据文档的默认设置是\lstinline

工作原理类似\verb,但尊重活动语言和样式。除非在可选参数中另有要求,否则这些列表使用灵活的列

因此,您需要使用可选参数更改列规范:

\lstinline[columns=fixed]{declare}

或者使用\lstMakeShortInline[columns=fixed]|来定义一个特殊的字符(在本例中为垂直 unix 管道)并简单地使用|declare|

在此处输入图片描述


如果您不想指定,\basicstyle您将获得:

在此处输入图片描述


概括:

  • [columns=fixed]需要应用于\lstinline

代码: 指定\basicstyle

\documentclass[11pt,letterpaper]{book}
\usepackage[utf8]{inputenc}
\usepackage{listings}
\usepackage{xcolor}

\lstset{
    frameround=fttt,
    language=SQL,
    numbers=left,
    breaklines=true,
    keywordstyle=\color{blue}\bfseries, 
    basicstyle=\ttfamily\color{red},
    numberstyle=\color{black}
    }
\lstMakeShortInline[columns=fixed]|

\begin{document}

\begin{lstlisting}[caption={SQL},label={lst:sql}]
declare @t table(
  id int
)
\end{lstlisting}

The above Listing \ref{lst:sql} demonstrates how to use |declare| statement to create a |table| variable.

\end{document}

代碼: 沒有\basicstyle

\documentclass[11pt,letterpaper]{book}
\usepackage[utf8]{inputenc}
\usepackage{listings}
\usepackage{xcolor}
\begin{document}

\lstset{frameround=fttt,language=SQL,numbers=left,breaklines=true}

\lstMakeShortInline[columns=fixed]|


\begin{lstlisting}[caption={SQL},label={lst:sql}]
declare @t table(
  id int
)
\end{lstlisting}

\noindent Using \verb+\lstinlne+:\par
The above Listing \ref{lst:sql} demonstrates how to use \lstinline[columns=fixed]{declare} statement to create a \lstinline{table} variable.

\noindent Using \verb+|+:\par
The above Listing \ref{lst:sql} demonstrates how to use |declare| statement to create a \lstinline{table} variable.


\end{document}

相关内容