我尝试使用不同于 courier 的等宽字体,但此列表中的字体均无效(http://www.ctan.org/topic/font-mono) 在我的系统上可用 - 并且由于我们在分布式系统中工作,因此自定义本地添加不是一种选择。(构建服务器、标准等)
所以问题是
- 是否有一种常用的等宽字体,它更为紧凑,即需要更少的水平空间?
- 我怎样才能减少 \texttt 或整个字体中所有字母的常规字距?
答案1
这里有两种方法:1)使用microtype
的\textls
宏,另一种是 ,\spaceout
没有任何包。我已将这些宏包装成\textttA
和\textttB
调用形式。
该\textls
宏使用可选参数来指定压缩或扩展,同时使用和\spaceout
的值来修改默认间距。\theLetterSpace
\extraWordSpace
两种方法都支持换行。
从下面的评论中总结,值得注意的是,该\textls
方法支持连字符,而该\spaceout
方法不支持。此外,参数\spaceout
不能包含本身带有参数的宏。
\documentclass{article}
\def\theLetterSpace{-0.5pt}
\def\extraWordSpace{-0.5pt}
\newcommand\spaceout[2][\theLetterSpace]{%
\def\LocalLetterSpace{#1}\expandafter\spaceouthelpA#2 \relax\relax}
\def\spaceouthelpA#1 #2\relax{%
\spaceouthelpB#1\relax\relax%
\ifx\relax#2\else\kern\extraWordSpace\ \kern\LocalLetterSpace\spaceouthelpA#2\relax\fi
}
\def\spaceouthelpB#1#2\relax{%
#1%
\ifx\relax#2\else
\kern\LocalLetterSpace\spaceouthelpB#2\relax%
\fi
}
\parskip 1ex
\usepackage{microtype}
\def\textttA#1{\texttt{\textls*[-70]{#1}}}
\def\textttB#1{\texttt{\spaceout{#1}}}
\begin{document}
\def\mytext{a bit of texttt}
This is \texttt{\mytext}\par
This is \textttA{\mytext}\par
This is \textttB{\mytext}\par
\def\mytext{a bit of texttt. a bit of texttt. a bit of texttt. a bit of texttt.
a bit of texttt. a bit of texttt. a bit of texttt. a bit of texttt. }
\noindent\hrulefill\sloppy\par
This is \texttt{\mytext}\par
This is \textttA{\mytext}\par
This is \textttB{\mytext}
\end{document}