\tt 内部的 >> 问题

\tt 内部的 >> 问题

我有一个内联代码示例,其中嵌套了 Java 泛型声明,使用了打字机字体。但是,结尾>>呈现为黑框。粗略的 Google 搜索建议$>>$,但这会删除打字机字体。使用\textgreater代替实际>也会遇到同样的问题。以下是有问题的代码片段:

...declaration {\tt List<Map<Integer, String>>} is...

有任何想法吗?

答案1

>>当变成连字、guillemet » 时,就会发生这种情况,因此它会以不同的方式呈现。如果打字机字体或输出查看器不支持此连字,这可以解释黑框。如果您将一个字符分组(例如{>}>>{>}或将两个字符分组){>}{>}或仅在其间插入一个空组,以分隔字符而不会造成空格,则可以防止出现连字>{}>

展示差异的最小示例:

\documentclass{article}
\usepackage[T1]{fontenc}
\begin{document}
...declaration {\ttfamily List<Map<Integer, String>>{>}>} is...
\end{document}

锁骨结扎

答案2

如果你只在几个地方需要这个,那么 Stefan 的方法很方便。如果你多次需要它,它就会变得很重:

\documentclass{article}
\usepackage[T1]{fontenc}

\DeclareRobustCommand{\noligtt}[1]{
  \begingroup\ttfamily
  \activategreater\activateless
  \scantokens{#1\noexpand}\endgroup}
\def\activategreater{\catcode`>=\active
  \begingroup\lccode`~=`>\lowercase{\endgroup\def~}{>\kern0pt }}
\def\activateless{\catcode`<=\active
  \begingroup\lccode`~=`<\lowercase{\endgroup\def~}{<\kern0pt }}

\begin{document}

...declaration \noligtt{<< List<Map<Integer, String>>} is.

\end{document}

在此处输入图片描述

相关内容