изменить кернинг \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подход не поддерживает. Кроме того, аргумент 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}

введите описание изображения здесь

введите описание изображения здесь

Связанный контент