我有一个内联代码示例,其中嵌套了 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}