
Я пробовал использовать шрифт, отличный от Courier, для моноширинных шрифтов, но ни один из этого списка (http://www.ctan.org/topic/font-mono) доступны в моей системе, а поскольку мы работаем в распределенной системе, пользовательские локальные дополнения невозможны. (Сервер сборки, стандарты и т. д.)
так что вопрос в том
- Существует ли обычный моноширинный шрифт, который более плотный, т.е. требует меньшего горизонтального пространства?
- как можно уменьшить общий кернинг для всех букв в \texttt или всего шрифта?
решение1
Вот два способа: 1) с microtype
макросом \textls
, а другой, \spaceout
, без каких-либо пакетов. Я обернул эти макросы в формы вызова \textttA
и .\textttB
Макрос \textls
использует необязательный аргумент для указания сжатия или расширения, а также \spaceout
использует значения \theLetterSpace
и \extraWordSpace
для изменения интервалов по умолчанию.
Оба подхода поддерживают перенос строк.
Подводя итог комментариям ниже, стоит отметить, что \textls
подход поддерживает переносы, тогда как \spaceout
подход не поддерживает. Кроме того, аргумент to \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}