最小示例:
\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
),将所有出现的 替换为/
:\slash
TeX 宏\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}