不包含连字符的未格式化 URL 的换行符

不包含连字符的未格式化 URL 的换行符

最小示例:

\documentclass{article}
\begin{document}
https://path.to.really.long/url/that/contains/no/dashes/but/instead/a/whole/lot/of/forward/slashes/which/makes/it/exceed/the/page/width
\end{document}

使用 XeLaTeX,我尝试使用大量未格式化的 URL没有使用hyperref包,并希望 URL 在 处断开/,因为其中一些不包含-。我该怎么做?

编辑:

我会尽量说得更具体一些。我的情况是这样的:

http://link1.com/long/link/...
‹lots of random text›
http://link2.com/long/link/...
‹lots of random text›
http://link3.com/long/link/...
...
‹lots of random text›
...
http://link573.com/long/link/...

这是一个团队项目,我希望源代码能够被阅读、编辑和容易理解由不使用 TeX 的其他人编写。我有一个主序言/布局文档,其中包含了所有其他未格式化的纯文本文件。

答案1

但是,您可以加载该url包吗?如果可以,请将 URL 包含在\url{...}宏中。发出指令\urlstyle{rm}以确保 URL 字符串使用的字体与主文本字体相同。

以下代码在 pdfLaTeX、XeLaTeX 和 LuaLaTeX 下编译效果同样好。

在此处输入图片描述

\documentclass{article}
\usepackage{url}
\urlstyle{rm} % roman font
\begin{document}
\noindent
\url{https://path.to.really.long/url/that/contains/no/dashes/but/instead/a/whole/lot/of/forward/slashes/which/makes/it/exceed/the/page/width}
\end{document}

附录:如果您可以选择使用 LuaLaTeX 而不是 XeLaTeX,则可以定义一个 Lua 函数(使用回调注册process_input_buffer),将所有出现的 替换为/\slashTeX 宏\slash毫不奇怪地会插入一个斜线符号,同时允许在此符号后立即换行。(该函数还注意不允许在两个连续符号中的第一个符号后换行/,因为这种情况可能经常发生,即\http://\https://。)

我相信此设置可以满足您的目标,即不必将 URL 字符串包含在\url指令中,并且仍可在斜杠符号后获得换行符。

在此处输入图片描述

% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{luacode}
\begin{luacode}
local function slash_to_slash ( ll )
      ll = string.gsub ( ll, "/", "\\slash " )
      ll = string.gsub ( ll, "\\slash \\slash ", "/\\slash " )
      return ll
end
luatexbase.add_to_callback("process_input_buffer", 
     slash_to_slash, 
     "convert slash symbols to slash macros")
\end{luacode}
\begin{document}

https://path.to.really.long/url/that/contains/no/dashes/but/instead/a/whole/lot/of/forward/slashes/which/makes/it/exceed/the/page/width

\end{document}

相关内容