如何在 LaTeX 中的 \texttt 环境中用点将单词连字符连接起来?

如何在 LaTeX 中的 \texttt 环境中用点将单词连字符连接起来?

网上有很多关于如何在 \texttt 环境中启用(或禁用)连字的讨论。我发现这两个选项

\usepackage[htt]{hyphenat}

\DeclareTextFontCommand{\mytexttt}{\ttfamily\hyphenchar\font=45\relax}

可以工作。但是,在 \texttt{ee.Algorithms.Landsat.simpleCloudScore()} 等术语中插入换行符仍然不起作用。我不在乎是否有规则建议不要换行代码,而是希望 LaTeX 能够输出,例如,

... ee.Algorithms
.Landsat.simpleCloudScore() ...

针对带破折号的单词所讨论的解决方案不起作用,而且令人惊讶的是,对于“我的”问题,几乎找不到任何解决方案。

答案1

您可以在句点处拆分,然后重新插入它们,并在前面加上惩罚,并且可以用连字符连接以下部分。

\documentclass{article}
\usepackage{xparse}
\usepackage[htt]{hyphenat}

\newcommand{\breakingperiod}{%
  \penalty0 % allow a break before the period
  .\nobreak\hspace{0pt}%
}

\ExplSyntaxOn

\NewDocumentCommand{\longword}{m}
 {
  \texttt
   {
    \seq_set_split:Nnn \l_michael_lw_seq { . } { #1 }
    \seq_use:Nn \l_michael_lw_seq { \breakingperiod }
   }
 }

\ExplSyntaxOff

\begin{document}

\parbox{0pt}{\hspace{0pt}%
  \longword{ee.Algorithms.Landsat.simpleCloudScore()}
}

\end{document}

在此处输入图片描述

\parbox技巧可以查看所有断点。

答案2

有各种可能性,取决于你是否想在 a 处断开.以连字符

在此处输入图片描述

\documentclass{article}

\usepackage{url}
\begin{document}


\newcommand\zz[1]{\par\bigskip\fbox{\parbox{#1}{\ttfamily\hyphenchar\font=`\-\lccode`\.=`\.
a Something.Landsat.simpleCloudScore()}}}

\zz{20em}

\zz{15em}

\zz{10em}

\zz{5em}

\catcode`.=\active
\edef\.{\string.}
\renewcommand\zz[1]{\par\bigskip\fbox{\parbox{#1}{\ttfamily\hyphenchar\font=`\-\def.{\string.\hspace{0pt}}%
a Something.Landsat.simpleCloudScore()}}}

\zz{20em}

\zz{15em}

\zz{10em}

\zz{5em}
\catcode`.=12


\end{document}

相关内容