结果

结果

我的 TeX 有很多内联代码需要编译,因此有时 PDF 的输出看起来像这样:

在此处输入图片描述

轮廓部分已编码{\tt set_task_state(current_state)},如何自动在内部断线set_task_state(current_stat)

答案1

monotype 字体的换行是一个难题。下面有五个选项(实际上很少,因为其中一些会产生不可接受的结果);我建议您使用listings包而不是仅仅\ttfamily(顺便说一句,\tt它已被弃用,不应再使用)来编写您的列表。我加载了 showframe文本区域的视觉指南。

\documentclass{article}
\usepackage{listings}
\usepackage{underscore}
\usepackage{showframe}

\lstset{
  basicstyle=\ttfamily\small,
  columns=fullflexible,
  breaklines=true
}

\begin{document}

The method {\ttfamily set_current_state(current_state)} is synonimous to {\ttfamily set_task_state(current_state)}

The method \lstinline|set_current_state(current_state)| is synonimous to \lstinline|set_task_state(current_state)|

{\sloppy
The method \lstinline|set_current_state(current_state)| is synonimous to \lstinline|set_task_state(current_state)|\par}

{\sloppy
The method {\ttfamily set_current_state(current_state)} is synonimous to {\ttfamily set_task_state(current_state)}\par}  

{\raggedright
The method \lstinline|set_current_state(current_state)| is synonimous to \lstinline|set_task_state(current_state)|\par}

{\raggedright
The method {\ttfamily set_current_state(current_state)} is synonimous to {\ttfamily set_task_state(current_state)}\par}

{{\ttfamily\hyphenchar\the\font=`\-}%
The method {\ttfamily set_current_state(current_state)} is synonimous to {\ttfamily set_task_state(current_state)}\par}

\end{document}

结果

在此处输入图片描述

一些评论

使用linebreaks=true启用换行点;然而,在这种情况下,逐字文本仍然突出。

使用sloppy会在单词之间留下可怕的巨大间隙。

使用\raggedright在这里会给出更好且可以接受的结果。

答案2

我建议结合两种方法:允许在_字符处设置断点,并在需要时允许更大的空间。第一种方法是通过设置_为活动(使用\tth代替\tt)来实现,第二种方法需要将\emergencystretch寄存器设置为适当的值:

{\catcode`\_=13 \gdef_{\string_\-}}
\def\tth{\tt\catcode`\_=13 }
\emergencystretch=3em

\hsize=14cm % for example

The method {\tth set_current_state(current_state)} is synonimous to
{\tth set_task_state(current_state)}.

\bye

您可能正在使用纯 TeX(恭喜),因为 LaTeX 用户讨厌\tt。因此,我的示例是纯 TeX。

相关内容