连字符 \texttt

连字符 \texttt

在任何人说什么之前,是的,我当然见过。但这不是我想要的。

我所寻找的基本上是一种改变\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}

在此处输入图片描述

相关内容