等宽字体的块文本对齐不正确

等宽字体的块文本对齐不正确

我想定义\code使用一些等宽字体来显示代码。

最初我使用过\texttt但是遇到了一些错误:

!pdfTeX error: /Users/az/.local/bin/pdflatex (file cmttb10): Font cmttb10 at 720 not found

答案这里建议改为\fontencoding{T1}\fontfamily{lmtt}\selectfont。似乎没有 也可以工作\fontencoding{T1},所以我把它去掉了。(但也许那是错的?它有什么作用?)

在下面的小示例中,此错误也仅发生在 上\usepackage{bold-extra}。如果我将其保留,则所有三种变体似乎都可以工作(在此示例中)。不确定哪种更好。在这三种情况下,字体看起来略有不同。

然而,这并不是真正的问题(尽管我对此也很好奇)。

在所有 3 种变体中,问题在于它无法正确对齐块文本。为什么?我该如何修复?

%!TEX encoding = UTF-8 Unicode
% some playground, to test problems, reproduce minimal example
\documentclass[paper=a4, fontsize=11pt]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage{lipsum}
\usepackage{bold-extra}

% https://tex.stackexchange.com/questions/87891/typewriter-text-in-sections-with-acm-sig-alternate-document-class
%\newcommand{\code}[1]{\texttt{#1}}
%\newcommand{\code}[1]{{\fontencoding{T1}\fontfamily{lmtt}\selectfont#1}}
\newcommand{\code}[1]{{\fontfamily{lmtt}\selectfont#1}}

\begin{document}
\tableofcontents

\chapter{Chapter with \code{code}}
\section{Section with \code{code}}

Code:
\code{hello\_world}, \code{hello\_world}, \code{hello\_world}, \code{hello\_world}, \code{hello\_world}, \code{hello\_world}, \code{hello\_world}, \code{hello\_world}, \code{hello\_world}.

\lipsum[0-1]
\end{document}

它看起来像这样: 截屏

问题这里有点相关。但是,那里的整个文本都使用等宽字体,而作者不希望等宽空格变成等宽。但是,在我的问题中,空格不是等宽的,所以这应该不是这里的问题。

答案1

添加此项解决了问题:

\setlength\emergencystretch{\hsize}\hbadness=10000

通过,其中还解释了这比仅仅使用更好\sloppy

相关内容