luatex 阻止在 \url 中创建 \endash、\emdash 连字符

luatex 阻止在 \url 中创建 \endash、\emdash 连字符

我想让\url连字符“-”中断。url 包有hyphens选项,但如果 url 中有多个连字符,luatex 会将它们转换为连字符,而 latex 则不会。我找不到如何使用普通字体在 url 中抑制“--”、“---”连字符的创建。我尝试\UrlBreaks, \UrlOrds, \verbatim@nolig@list通过添加/删除进行编辑\do\-,但随后我得到了其他越野车结果。

\documentclass{article}
\usepackage[T1]{fontenc}

\usepackage[hyphens]{url}

% \def\UrlBreaks{\do\.\do\@\do\\\do\/\do\!\do\_\do\|\do\;\do\>\do\]%
  % \do\)\do\,\do\?\do\&\do\'\do+\do\=\do\#%
  % \do\- % tried to add it here
  % }

% original macro from url has two `\do\-`. Why?
% \def\UrlOrds{\do\*
  % \do\-
  % \do\~\do\'\do\"
  % \do\-
  % }%

% it seems that this should do the trick, but it does'nt?
%\makeatletter
%\def\verbatim@nolig@list{\do\`\do\<\do\>\do\,\do\'\do\-}
%\makeatother
  
\def\UrlFont{}%\ttfamily}

\fboxsep=0pt
\parindent=0pt

\begin{document}

\par\url{-}
\par\url{--}
\par\url{---}

\fbox{\parbox[t]{3cm}{
\par\url{11111111111111-aaaaaaaa}
\par\url{11111111111111--aaaaaaa}
\par\url{11111111111111---aaaaaa}
}}

\end{document} 

乳胶输出:

在此处输入图片描述

lualatex 输出:

在此处输入图片描述

我使用 TL2019 和乳胶(需要 dvi 模式)

答案1

以下是我想到的解决方案。我创建了-一个活动角色,它插入数学字符和\penalty\UrlBreakPenalty。现在 luatex 不会创建 ndash/mdash 并断开 上的链接-

\documentclass{article}
\usepackage{etoolbox}
\usepackage[T1]{fontenc}
\usepackage[hyphens]{url}
  
\AtBeginDocument{%
  \appto\UrlSpecials{\do\-{\mathchar 0045\penalty \UrlBreakPenalty}}%
  }
 
\def\UrlFont{}

\begin{document}
\fboxsep=0pt
\parindent=0pt
\par\url{-}
\par\url{--}
\par\url{---}

\fbox{\parbox[t]{3cm}{
\par\url{11111111111111-aaaaaaaa}
\par\url{11111111111111--aaaaaaa}
\par\url{11111111111111---aaaaaa}
}}
\end{document} 

在此处输入图片描述

相关内容