我使用带有 latex 的 C++ 代码片段。我尝试使用 verbatim、lstlisting 和 minted(我认为哪个最漂亮)。但它们有一个问题。当我想编写代码 p->~T() 时,我在行首得到了波浪号:
我该如何修复这个问题或者哪个代码包不会提升我的 tilda?
\documentclass[a4paper,14pt]{extreport}
\renewcommand{\baselinestretch}{1.3}
\usepackage[warn]{mathtext}
\usepackage[T1,T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[normalem]{ulem}
\usepackage{blindtext}
\usepackage{hyperref}
\usepackage{epigraph}
\usepackage{minted}
\usepackage{listings}
\usepackage{xcolor}
\lstset { %
language=C++,
backgroundcolor=\color{black!5}, % set backgroundcolor
basicstyle=\footnotesize,% basic font setting
}
\begin{document}
\begin{minted}{cpp}
void destroy(T* p) {
p->~T();
}
\end{minted}
\end{document}
答案1
文档minted
对“高波浪号”有所说明并建议使用lmodern
它来降低它。
但是,lmodern
不支持 T2A 编码。如果您的minted
列表不需要西里尔文,您可以使用不太知名的功能fancyvrb
(基于此功能minted
构建)。该功能是可以表示
fontfamily=myFont
在设置中fancyvrb
(或minted
,在本例中)并重新定义\myFont
为所需的编码和字体系列组合。
\documentclass{article}
\usepackage[T1,T2A]{fontenc}
\usepackage{minted}
\renewcommand{\myFont}{\fontencoding{T1}\fontfamily{lmtt}\selectfont}
\setminted{
fontfamily=myFont,
}
\begin{document}
\begin{minted}{cpp}
void destroy(T* p) {
p->~T();
}
\end{minted}
\end{document}
答案2
你没有显示测试文档,但我猜你使用的是现代计算机,大多数字体都没有那么高~
,拉丁现代字体非常相似,但会产生
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\begin{document}
\verb|p->~T()|
\end{document}
或者对于更大的示例,请注意您需要切换回 T1 才能使用拉丁现代 tt 字体。
\documentclass[a4paper,14pt]{extreport}
\renewcommand{\baselinestretch}{1.3}
\usepackage[warn]{mathtext}
\usepackage[T1,T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[normalem]{ulem}
\usepackage{lmodern}
\usepackage{blindtext}
\usepackage{hyperref}
\usepackage{epigraph}
\usepackage{minted}
\usepackage{listings}
\usepackage{xcolor}
\lstset { %
language=C++,
backgroundcolor=\color{black!5}, % set backgroundcolor
basicstyle=\footnotesize,% basic font setting
}
\showoutput
\begin{document}
{\fontencoding{T1}\selectfont
\begin{minted}{cpp}
void destroy(T* p) {
p->~T();
}
\end{minted}
}
\end{document}