使用 tcbox 和 mintedinline 进行内联代码高亮显示时出现问题 - 将 # 渲染为 ##

使用 tcbox 和 mintedinline 进行内联代码高亮显示时出现问题 - 将 # 渲染为 ##

我使用 tcbox 和 mintedinline 创建了一个用于内联代码突出显示的命令,但遇到了一个问题。当我尝试只写一个 # 时,它会呈现为 ##。我尝试了 tcbox 的各种选项,但似乎都无法解决问题。有趣的是,当我只使用 mintedinline 时,它​​可以按预期工作。因此,我认为问题不在于我的 \setminted 配置。

如能就如何解决此问题提供任何见解或建议,我们将不胜感激。

最小乳胶代码:

\documentclass{article}
\usepackage{xcolor}
\usepackage{minted}
\usepackage{tcolorbox}

\definecolor{codeinlineBlue}{HTML}{CFE2FC}
\newcommand\mystrut{\rule[-2.5pt]{0pt}{12pt}}
\newcommand{\codeinline}[2][text]{%
    \tcbox[
      on line,
      boxsep=0pt,
      left=2pt,
      right=2pt,
      top=0pt,
      bottom=0pt,
      enlarge top initially by=-4pt,
      enlarge bottom by=-4pt,
      enlarge right by=-4pt,
      enlarge left by=-2pt,
      opacityframe=0,
      colback=codeinlineBlue,
      fontupper={\ttfamily\mystrut},
      fontlower={\ttfamily\mystrut}]
      {\mintinline{#1}{#2}}
}

\begin{document}

Text before code \codeinline{int main() \{ return 0; \}}, text after. Problem: \codeinline{#}.
This works as expected: \mintinline{text}{#}

\end{document}

在此处输入图片描述

答案1

您应该逐字收集参数(但您不能将其用作\codeinline另一个命令的参数)。为此,您可以使用\NewTotalTCBox

\documentclass{article}
\usepackage{xcolor}
\usepackage{minted}
\usepackage{tcolorbox}
\tcbuselibrary{xparse}

\definecolor{codeinlineBlue}{HTML}{CFE2FC}
\newcommand\mystrut{\rule[-2.5pt]{0pt}{12pt}}

\NewTotalTCBox{\codeinline}{O{text}v}{
  on line,
  boxsep=0pt,
  left=2pt,
  right=2pt,
  top=0pt,
  bottom=0pt,
  enlarge top initially by=-4pt,
  enlarge bottom by=-4pt,
  enlarge right by=-4pt,
  enlarge left by=-2pt,
  opacityframe=0,
  colback=codeinlineBlue,
  fontupper={\ttfamily\mystrut},
  %fontlower={\ttfamily\mystrut},
}{\mintinline{#1}{#2}}


\begin{document}

Text before code \codeinline{int main() \{ return 0; \}}, 
text after. Problem: \codeinline{#}.
This works as expected: \mintinline{text}{#}

\end{document}

在此处输入图片描述

相关内容