代码之家  ›  专栏  ›  技术社区  ›  Jérôme

乳胶和列表:突出显示代码的某些部分

  •  9
  • Jérôme  · 技术社区  · 14 年前

    我用的是乳胶和 listings 包在文档内显示一些C++代码(带有语法高亮显示)。

    我需要强调代码的某些部分。这个特定的突出显示与语法突出显示无关,它只是我想突出显示的代码的一些部分,以便读者能够集中精力。

    我希望我可以做一些变量名,例如,用粗体显示,在黄色背景上显示。下面是我用msword做的一些事情,我想用乳胶(当然,不是红色和绿色下划线)来复制:

    http://img210.imageshack.us/img210/5302/coden.png .

    我还没找到办法 列表 包裹。有可能吗?

    3 回复  |  直到 12 年前
        1
  •  6
  •   Konrad Rudolph    14 年前

    您可以在您的 listings 区域:

    \begin{listings}[escapeinside=\{\}]
    {\highlight{Colonnes[3] = 9}}
    \end{listings}
    

    \highlight 是突出显示的宏(需要自己编写)。有关更多详细信息,请参阅清单文档第4.14节(转义到LaTex)。注意,现在您需要逃出代码中的特殊字符的所有其他事件,以便C++代码。 {} 可能是个错误的选择。

        2
  •  10
  •   Community Navdeep Singh    7 年前

    不幸的是 @Konrad's approach 真正逃离 listings 完全格式化。如果突出显示的文本包含任何程序关键字,则这些关键字将不会由 列表 打包,因为它们将位于非突出显示的行上。理想的可能是使用 \highlight{\lstinline{...}} 但似乎你不能 \lstinline A中的宏 列表 环境。

    Tex StackExchange站点有 essentially the same question ,带有 nice answer based on the tikz package 和A further refinement thereof . 它覆盖突出显示,同时仍允许 列表 自动设置突出显示的文本的格式。

    整个 tikz -基于方法 took on a life of its own 最终导致 good, robust solution . 这是目前我最熟悉的突出显示所选内容的方法 列表 行,同时保持自动语法突出显示。它实际上也同样适用于在 任何 给定页面上的一对位置。

        3
  •  4
  •   coanor    12 年前

    在C或C++代码中,我认为字符 ` 可以自由成为转义符。

    lstset {
    ...
    escapeinside=\`\`,
    ...
    }
    

    然后,你可以像

    \begin{lstlisting}
    const_cast<T>(`\it{exception}`)
    \end{lstlisting}
    

    这个词 exception 然后变成 例外 . btw,字符 ` 是降价格式吗? 代码的字符,所以它很容易在C或C++类似代码列表中使用它。