Проблема с подсветкой встроенного кода с использованием 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}

введите описание изображения здесь

Связанный контент