编辑:

编辑:

编辑:参见这个答案如果你还希望你的链接不过满(他们会在他们认为合适的地方使用连字符)

我见过,但是那里使用了 biblatex,在我的情况下我不使用它。

有没有办法我可以这样做:

\url{https://example.tld/example/something/}

或者,如果可能的话,甚至可能:

\url{https://www.example.tld/example/something/}

而且,

https://www.example.tld/example/something/

作为文档中的输出

得到这个:

example.tld/example/something

但它仍然指向完整链接吗?

这个问题没有解决办法吗?我是不是只能访问\href所有链接?:

\href{https://www.example.tld/example/something/}{example.tld/example/something}

或者有什么东西可以自动解决这个问题?

我之所以问这个问题,是因为如果我在命令中输入链接(\url就像我希望它显示出来一样),当它被点击时它并不总是能起作用。

答案1

这是基于 LaTeX3 的解决方案,它使用正则表达式执行高级匹配,就像您所引用的帖子一样。

\documentclass{article}
\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


\begin{document}

Follow the link: \clearurl{https://example.tld/example/something/}

\end{document}

在此处输入图片描述

请注意,已经有几十个包可以加载expl3(例如xparse),因此你甚至可能不需要使用\usepackage{expl3}


编辑:

评论中讨论了由于\texttt工作方式而导致的连字符问题。以下是基于这个答案

\documentclass{article}
\usepackage{expl3}
\usepackage{hyperref}

\makeatletter
\DeclareRobustCommand\ttfamily
        {\not@math@alphabet\ttfamily\mathtt
         \fontfamily\ttdefault\selectfont\hyphenchar\font=-1\relax}
\makeatother
\DeclareTextFontCommand{\mytexttt}{\ttfamily\hyphenchar\font=`\/\relax}

\ExplSyntaxOn
\newcommand{\clearurl}[1]{
    \tl_set:Nn \parsed_url {#1}
    \regex_replace_all:nnN {.*:\/\/(?:www.)?(.*[^\/])\/?} {\1} \parsed_url
    \href{#1}{\mytexttt{\parsed_url}}
}
\ExplSyntaxOff


\begin{document}

Follow the link: \clearurl{https://example.tld/example/something/}

\end{document}

在此处输入图片描述

答案2

您可以为此提议定义一个新命令,例如:

\documentclass{article}
\usepackage{hyperref}

\newcommand{\shortlink}[1]{\href{https://www.#1}{\texttt{#1}}}

\begin{document}

\shortlink{example.tld/example/something}

\end{document}

相关内容