
tcbox と mintedinline を使用してインライン コードの強調表示を行うコマンドを作成しましたが、問題が発生しています。# のみを記述しようとすると、## としてレンダリングされます。tcbox のさまざまなオプションを試してみましたが、問題は解決されていないようです。興味深いことに、mintedinline のみを使用すると、期待どおりに動作します。したがって、問題は \setminted 構成にあるとは思いません。
この問題の解決方法についてのご意見やご提案をいただければ幸いです。
最小限の LaTeX コード:
\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}