更新 \mintinline 命令以禁用斜体(或任何其他替代方法)

更新 \mintinline 命令以禁用斜体(或任何其他替代方法)

对于环境,您可以通过使用然后执行来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}它给出了lexercode,但也许其中一个是可选的?

是否可以在序言中以某种方式\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}

在此处输入图片描述

相关内容