\lstinline!Foo! 与 \lstinline{Foo}

\lstinline!Foo! 与 \lstinline{Foo}

\lstinline!...!我想知道and有什么区别或正确用法\lstinline{...}

我更喜欢,{}因为我觉得它与其他命令更一致,但例如在下面的示例中括号不起作用所以我必须使用!!

\documentclass[]{article}
\usepackage{listings}
\begin{document}
This line is fine I can use \lstinline{inline listings with brackets}.
begin{center}
  \begin{tabular}{ c l }
    Example & Explanation \\ \hline
    \lstinline!$#! & This works\\
    \lstinline{$*} & But how come this doesn't? \\
  \end{tabular}
\end{center}
\end{document}

!!这是为什么?和 的经验法则是什么{}

答案1

它们并存的原因是

  • 在里面{...},LaTeX“特殊字符”被视为不同,所以你不能使用$,因为它是数学模式的字符。
  • 里面!...!,你可以使用任何东西,但!

至于什么是“好习惯”:随你便。我认为{}不太容易混淆,会将其用作默认设置,!!只在必要时切换到。另一方面,如果您的大多数条目都需要!!,那么可能将其设为默认设置。

答案2

{}我发现使用任意符号作为分隔符之间存在细微的差别:

当尝试使用mathescape内部数学模式时,{}行为不如预期,!!工作原理:

\documentclass{article}

\usepackage{listings}
\usepackage{amsmath}

\begin{document}
With ``!!'': \lstinline[mathescape]!a$\beta$c! in math mode gives
\begin{align}
    \lstinline[mathescape]!a$\beta$c!
\end{align}

With ``\{\}'': \lstinline[mathescape]{a$\beta$c} in math mode gives
\begin{align}
    \lstinline[mathescape]{a$\beta$c}
\end{align}

\end{document}

给出(我可以在这里表示的数量)

使用“!!”:数学模式下的aβ给出c

aβ c(1)

使用“{}”:数学模式下的aβ给出c

β ac(2)

并且第一个align块编译时没有错误,而第二个块没有。(Improper alphabetic constantUndefined control sequence第 15 行。)因此,我没有看到{}处理方式$$不同,如前面的答案所述,但大括号和其他符号的行为显然不同(并且似乎大括号或 amsmath- 确实存在问题align。这需要进一步的实验、阅读或了解源代码的人)。

否则,我主要因为方便而使用它们,我通常的方法是使用,{}除非我的代码包含括号,在这种情况下我会使用!!

相关内容