对于环境,您可以通过使用然后执行来minted
禁用斜体注释/预处理器包含等。etoolbox
\AtBeginEnvironment{minted}{\let\itshape\relax}
直接使用\let\itshape\relax
即可达到预期效果
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage{minted}
\begin{document}
Regular style: \mintinline[]{cpp}{#include <type_traits>}
Hacky style: {\let\itshape\relax\mintinline[]{cpp}{#include <type_traits>}}
Not italic afterward xD
\end{document}
产生预期的非斜体版本:
但是,我想创建一种基本上在调用{\let\itshape\relax
之前和}
之后注入的方法\mintinline
。不过,这是一个复杂的命令,我觉得我不知道我不知道什么。我认为这是我最成功的尝试,尝试遵循本指南,我在序言中添加了这一点:
\usepackage{letltxmacro}
\makeatletter
\LetLtxMacro{\NewMintinline}{\mintinline}
\let\OldMintinline\mintinline
% not even adding itshape relax, just trying to redefine...
\renewcommand{\mintinline}[2][\newdef]{\OldMintinline[{#1}]{#2}{#3}}
\makeatother
我尝试了许多不同的变体,但最终我完全迷失了。我认为它应该是2
参数,因为\mintinline[optional]{lexer}{code}
它给出了lexer
和code
,但也许其中一个是可选的?
是否可以在序言中以某种方式\let\itshape\relax
对所有的施展魔法\mintinline
?我知道我可以将\mintinline
代码中的 全部 转换为{\let\itshape\relax\mintinline[]}
...但这并不理想 ;)
谢谢!
答案1
注入指令\mintinline
:
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage{minted}
\usepackage{xpatch}
\xpatchcmd{\mintinline}{\begingroup}{\begingroup\let\itshape\relax}{}{}
\begin{document}
Hacky style: \mintinline[]{cpp}{#include <type_traits>}
Not italic afterward xD
\end{document}
使用类似的想法minted
:
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage{minted}
\usepackage{xpatch}
\xpatchcmd{\mintinline}{\begingroup}{\begingroup\let\itshape\relax}{}{}
\xpatchcmd{\minted}{\VerbatimEnvironment}{\VerbatimEnvironment\let\itshape\relax}{}{}
\begin{document}
Hacky style: \mintinline[]{cpp}{#include <type_traits>}
\begin{minted}{cpp}
#include <type_traits>
\end{minted}
\end{document}