允许 URL 字符串中的连字符(“-”)处换行

允许 URL 字符串中的连字符(“-”)处换行

问题:

我创建了一个以特定方式为 URL 字符串着色的命令。与文本不同,URL 不会在我的文档中在连字符处断开。

最小工作示例(MWE):

\documentclass[a5paper]{article}

\usepackage{lipsum}
\usepackage{xcolor}
\definecolor{editorBlue}{cmyk}{1, 0.35, 0, 0}

\newcommand{\inlinecode}[1]{{\color{editorBlue}\texttt{#1}}}

\begin{document}

\inlinecode{127.0.0.1:3000/html/chapter2/assignment1/articles-diary-fruits.html}

\lipsum[1]

\end{document}

输出:

在此处输入图片描述

期望输出:

URL 应该尽可能换行并在新行继续,例如在本例中,在 之后articles-

答案1

(简化答案)

url使用选项hyphensspaces和加载包obeyspaces

\usepackage[hyphens,spaces,obeyspaces]{url}

并替换\texttt\url

如果要排版的字符串包含对 TeX 来说“特殊”的字符(例如、、和,仅举几例),使用\url而不是也将很有用。\texttt#&~_


完整的 MWE (最小工作示例):

在此处输入图片描述

\documentclass[a5paper]{article}
\usepackage[hyphens,spaces,obeyspaces]{url}
\usepackage{xcolor}
\definecolor{editorBlue}{cmyk}{1, 0.35, 0, 0}

\newcommand{\inlinecode}[1]{{\color{editorBlue}\url{#1}}}
% use '\nolinkurl' instead of '\url' if 'hyperref' package is loaded as well

\begin{document}

\hrule % just to illustrate width of text block

\smallskip
\inlinecode{127.0.0.1:3000/html/chapter2/assignment1/articles-diary-fruits.html}

\end{document}

附录:为了完整起见,这里有第二个解决方案,它不使用\url(或\nolinkurl) 指令。相反,它加载listings包并使用lstinline宏。请注意,工作假设是|字符(用作分隔符)不会出现在 URL 或代码字符串中。如果此假设不正确,只需使用更合适的分隔符即可。

这是一个 MWE(没有截图,因为输出与上面的相同):

\documentclass[a5paper]{article}
\usepackage{xcolor}
\definecolor{editorBlue}{cmyk}{1, 0.35, 0, 0}

\usepackage{listings}
\lstset{breaklines,moredelim=[is][\ttfamily]{|}{|}}

\newcommand{\inlinecode}[1]{{\color{editorBlue}%
\lstinline{|#1|}}}

\usepackage[colorlinks]{hyperref} % just for this example

\begin{document}
\hrule % just to illustrate width of text block
\smallskip

\inlinecode{127.0.0.1:3000/html/chapter2/assignment1/articles-diary-fruits.html}
\end{document}

相关内容