使用下划线换行

使用下划线换行

这是这个。那里描述了一种如何“转义下划线”的方法。我想用它将超链接放入边距中。

链接文本溢出到右侧

正如您所见,如果链接文本很长,它就会溢出并且不会中断。

我希望它不插入破折号就断开。我试过了\linebreak,但这会弄乱链接 URL。

梅威瑟:

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}


% <https://tex.stackexchange.com/a/20892>
\makeatletter
\DeclareRobustCommand*{\escapeus}[1]{%
  \begingroup\@activeus\scantokens{#1\endinput}\endgroup}
\begingroup\lccode`\~=`\_\relax
   \lowercase{\endgroup\def\@activeus{\catcode`\_=\active \let~\_}}

\newcommand\thyrefdist[1]{\marginpar{\href{https://some.web.site/#1.html}{\texttt{\escapeus{#1}}}}}

%opening
\title{}
\author{}

\begin{document}

\maketitle

\begin{abstract}

\end{abstract}

Test\thyrefdist{Very_Long_Text_That_Does_Not_Wrap}

\end{document}

答案1

在此处输入图片描述

\documentclass[a4paper,10pt]{article}

\usepackage{hyperref}




\newcommand\thyrefdist[1]{\marginpar{\href{https://#1.html}{\path{#1}}}}

%opening
\title{}
\author{}

\begin{document}

\maketitle

\begin{abstract}

\end{abstract}

Test\thyrefdist{Very_Long_Text_That_Does_Not_Wrap}

\end{document}

答案2

在一件令人尴尬的事情发生后,我设法弄清楚了。另一个答案描述了如何重新定义,\_以便它也允许中断。关键似乎是只在转义宏的范围内进行重新定义。

\DeclareRobustCommand*{\escapeus}[1]{%
  \begingroup\renewcommand\_{\textunderscore\allowbreak}\@activeus\scantokens{#1\endinput}\endgroup}
\begingroup\lccode`\~=`\_\relax
   \lowercase{\endgroup\def\@activeus{\catcode`\_=\active \let~\_}}

相关内容