在任何人说什么之前,是的,我当然见过这。但这不是我想要的。
我所寻找的基本上是一种改变\texttt
工作方式的方法,或者是一种新的命令\texttt
,但不是仅在空格处使用连字符,而是在它认为合适的地方使用连字符,因为在我的文档中,有些内容不包含任何类型的破折号,它们只是随机生成的很长的字母和数字字符串,因此,使用这种解决方案不会对它们进行连字符处理。我不关心文本如何连字符,我只是不想让它太满。
我为什么要这样做?好吧,我正在使用一个命令来获取我的链接,然后它会删除其中的任何协议信息(http(s)://
)或www
,并以这种方式在编译的文档中显示它们,但保持它们的功能相同(当它们在 PDF 中被点击时)。该命令来自此主题:
\usepackage{expl3}
\usepackage{hyperref}
\ExplSyntaxOn
\newcommand{\clearurl}[1]{
\tl_set:Nn \parsed_url {#1}
\regex_replace_all:nnN {.*:\/\/(?:www.)?(.*[^\/])\/?} {\1} \parsed_url
\href{#1}{\texttt{\parsed_url}}
}
\ExplSyntaxOff
答案1
您可以利用xurl
。
\documentclass{article}
\usepackage{hyperref}
\usepackage{xurl}
\ExplSyntaxOn
\NewDocumentCommand{\clearurl}{m}
{
\tl_set:Nn \l__clearurl_url_tl {#1}
\regex_replace_all:nnN {.*:\/\/(?:www.)?(.*[^\/])\/?} {\1} \l__clearurl_url_tl
\clearurl_print:nV { #1 } \l__clearurl_url_tl
}
\tl_new:N \l__clearurl_url_tl
\cs_new_protected:Nn \clearurl_print:nn
{
\href{#1}{\nolinkurl{#2}}
}
\cs_generate_variant:Nn \clearurl_print:nn { nV }
\ExplSyntaxOff
\begin{document}
\clearurl{https://www.google.it/books/edition/Mirifici_Logarithmorum_Canonis_Construct/VukHAQAAIAAJ?hl=en&gbpv=1&dq=mirifici+logarithmorum&pg=PT1&printsec=frontcover}
\end{document}