我的文档是常规文本和代码的混合,我使用 \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|
,以便它可以不经处理就通过。