改变 \texttt 的字距

改变 \texttt 的字距

我尝试使用不同于 courier 的等宽字体,但此列表中的字体均无效(http://www.ctan.org/topic/font-mono) 在我的系统上可用 - 并且由于我们在分布式系统中工作,因此自定义本地添加不是一种选择。(构建服务器、标准等)

所以问题是

  1. 是否有一种常用的等宽字体,它更为紧凑,即需要更少的水平空间?
  2. 我怎样才能减少 \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}

在此处输入图片描述

在此处输入图片描述

相关内容