![使用下划线换行](https://linux22.com/image/384453/%E4%BD%BF%E7%94%A8%E4%B8%8B%E5%88%92%E7%BA%BF%E6%8D%A2%E8%A1%8C.png)
这是这个。那里描述了一种如何“转义下划线”的方法。我想用它将超链接放入边距中。
正如您所见,如果链接文本很长,它就会溢出并且不会中断。
我希望它不插入破折号就断开。我试过了\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
答案2
在一件令人尴尬的事情发生后,我设法弄清楚了。另一个答案描述了如何重新定义,\_
以便它也允许中断。关键似乎是只在转义宏的范围内进行重新定义。
\DeclareRobustCommand*{\escapeus}[1]{%
\begingroup\renewcommand\_{\textunderscore\allowbreak}\@activeus\scantokens{#1\endinput}\endgroup}
\begingroup\lccode`\~=`\_\relax
\lowercase{\endgroup\def\@activeus{\catcode`\_=\active \let~\_}}