允许在 \texttt 格式的文本中任意换行

允许在 \texttt 格式的文本中任意换行

我的文档是常规文本和代码的混合,我使用 \texttt{} 格式化代码。为了使这更容易一些,我添加了一个新命令:

\newcommand {\ttt} {\texttt}

所以现在我\ttt{my code}只要引用代码就行了。问题是这些代码段的空格之间通常有很长的“单词”,所以我想让 LaTeX 随意在我的代码中插入换行符,而不必担心它是否在空格处。有没有办法将此规则添加到我的新命令中?

(编辑)这是一个文档的最小工作示例,我想在函数名称的中间添加换行符:

\documentclass{article}

\newcommand {\ttt} {\texttt}

\begin{document}
One of the functions in my software is \ttt{myVeryLongFunctionName.MoreFunctionName(parameter1,parameter2,parameter3,parameter4,parameter5)}. It's a very nice function.

\end{document}

答案1

虽然有很多答案长字符串中的换行符,这是新增的功能,它添加了一些独特的功能。特别是,宏和分组可以毫无问题地嵌入到已处理的文本中。此外,它还会自动使用粘连功能,即使在紧密的列中也能提供良好的边距。

我使用tokcycle环境来处理环境中的每个标记。如果是打印字符,我会用一点 wiggle-glue 来设置它以进行边距和\allowbreak。宏、组和空格直接回显到输出。

\documentclass{article}
\usepackage{tokcycle,xcolor,lmodern}
\xtokcycleenvironment\autobreak
{\addcytoks{##1\hspace{0pt plus 1pt minus.5pt}\allowbreak}}
{\processtoks{##1}}
{\addcytoks{##1}}
{\addcytoks{##1}}
{\ttfamily}
{}
\textwidth=2in
\begin{document}
Here is the technique: \autobreak
5A0FF349ABC5A0FF349ABC5A0FF349ABC5A0FF%
349ABC5A0FF349ABC5A0FF349ABC5A0FF349AB%
C5A0FF349ABC5A0FF349ABC5A0FF349ABC5A0F%
F3\endautobreak. Now I am almost done.

Let's try the OP's function: \autobreak 
myVeryLongFunctionName.MoreFunctionName%
(parameter1,parameter2,parameter3,parameter4,parameter5).%
\endautobreak{} It's a very nice function.

Now let's try it with embedded macros and grouping: 
\autobreak myVeryLongFunctionName.MoreFunctionName%
(\textcolor{|red|}{parameter1},\textbf{parameter2},%
\textit{parameter3},\textsf{parameter4},%
\textsc{parameter5})\endautobreak. Cool.

\end{document}

在此处输入图片描述

在最后一段中,为了防止颜色规范red被摆动胶水和污染\allowbreak,我使用了tokcycle转义功能并用它划定界限|red|,以便它可以不经处理就通过。

相关内容