基于 hyperref 的新命令无法处理特殊输入字符

基于 hyperref 的新命令无法处理特殊输入字符

我的目标是通过 -package 为包含超链接的文本添加粗下划线hyperref,这样,当打印文件时,就可以看到某些单词后面隐藏着一个链接。

添加新命令时,我发现的 -options\myhref中包含的特殊德语字符 (ä、ö、ü、ß)不再起作用。在正常情况下,它们可以正常工作,因为它们包含在文档类中,我相信。latin1inputenc\hrefscrbook

\documentclass%
% [12pt,abstracton,titlepage,parskip=false, no, no,twoside=true,open=right]
{scrbook}


\usepackage[autooneside=false, headsepline, plainheadsepline, automark]{scrlayer-scrpage}
%%%%%                           Layout
\usepackage{geometry}
\geometry{top=1in, bottom=1in, left=1in, right=1in}
\usepackage{setspace}
\linespread{1}

\usepackage{url}
\usepackage[breaklinks=true]{hyperref}
\usepackage{graphicx}
\usepackage{color,soul} \setul{0.4ex}{0.3ex} \setulcolor{blue} \sethlcolor{yellow}

\newcommand{\myhref}[2]{%
\href{#1}{\ul{#2}}}

% \let\oldhref\href
% \renewcommand{\href}{%
%   \oldhref{#1}{\setulcolor{blue}\ul{#2}}}

\begin{document}

\myhref{www.google.com%}{Schär Schar. fließen. Önvestment Investment.}

\href{www.google.com%}{Schär Schar. fließen. Önvestment Investment.}

\end{document}

在此处输入图片描述

我是否错误地定义新命令?

正如评论指出的那样,解决方案是使用包soulutf8而不是soul为了让下划线接受字符。但是,我现在遇到了后续问题,即新命令myhref不接受 URL 中的“%”,但旧命令href可以接受。我调整了 MWE。

答案1

下面的代码解决了这两个问题:

\documentclass{scrbook}

\usepackage[T1]{fontenc}
\usepackage{hyperref,xcolor,soulutf8}

\NewDocumentCommand{\myhref}{ v m }{\href{#1}{\ul{#2}}}

\begin{document}

\myhref{www.google.com/%}{Schär Schar. fließen. Önvestment Investment.}

\end{document}

相关内容