问题:
我创建了一个以特定方式为 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
使用选项hyphens
、spaces
和加载包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}