西里尔文和 breakhref,我该如何定义?

西里尔文和 breakhref,我该如何定义?

我正在尝试为 .ru 维基百科编写网址。出于其他一些原因,我使用\cyrillic和,\breakhref如以下脚本中定义的那样。对于像这样的网址http://ru.wikipedia.org/wiki/Елена_Стасова,我无法使用正确的西里尔字符和活动链接来呈现它们。如果您对此有所了解,欢迎您提出建议。

\documentclass[titlepage,a4paper,12pt]{article}
\usepackage{etex}
\usepackage{bigfoot}
\DeclareNewFootnote{default}
\DeclareNewFootnote{Inter}[alph]  %arabic
\MakeSortedPerPage{Inter}
\usepackage[backend=biber,style=philosophy-modern,sorting=nyt]{biblatex}
\usepackage[T2A,T1]{fontenc} 
\usepackage[utf8]{inputenc} 
\usepackage[titletoc,toc,title]{appendix}
\usepackage{lmodern}         % Enable Latin Modern fonts
\usepackage{graphicx}
\usepackage{textcomp}
\usepackage[american,russian,italian]{babel}
\usepackage{tipa}
\usepackage[babel,italian=guillemets]{csquotes}
\usepackage{enumitem}
\usepackage{ifthen}
\usepackage{float}
\usepackage{datetime}
\usepackage{multirow}
\usepackage{pdfcolparallel}
\usepackage{longtable}
\usepackage{fancyhdr}
\usepackage{hyperref}
\usepackage{hypcap}
\usepackage{color}
\usepackage[tableposition=top,figureposition=bottom,font=small,format=hang]{
caption}
\usepackage[object=vectorian]{pgfornament}
\usepackage[normalem]{ulem}
\usepackage{soul}
\newcommand\cyrillic{%
\renewcommand\rmdefault{wncyr}%
\renewcommand\sfdefault{wncyss}%
\renewcommand\encodingdefault{T2A}%
\normalfont
\selectfont}
\makeatletter
\newcommand*{\breakhref}{}
\DeclareRobustCommand*{\breakhref}{%
  \begingroup
  \hyper@normalise\breakhref@
}
\newcommand*{\breakhref@}[2]{%
  \endgroup
  \SOUL@setup
  \def\SOUL@everyspace##1{%
    ##1%
    \dimen@=\fontdimen2\font
    \advance\dimen@ by \fontdimen3\font
    \cleaders\hbox to \dimen@{%
      \hss
      \href{#1}{\ \vphantom{#2}}%
      \hss
    }\hskip\dimen@\relax
    \hspace{-\fontdimen3\font
        plus \fontdimen3\font minus \fontdimen3\font}%
  }%
  \def\SOUL@everysyllable{%
    \href{#1}{\the\SOUL@syllable\vphantom{#2}}%
  }%
  \def\SOUL@everyhyphen{%
    \discretionary{-}{}{}%
  }%
  \def\SOUL@everyexhyphen##1{%
    \SOUL@setkern\SOUL@hyphkern
    \href{#1}{##1\vphantom{#2}}%
    \discretionary{}{}{%
      \SOUL@setkern\SOUL@charkern
    }%
  }%
  \SOUL@{#2}%
}
\makeatother
\author{mario \\ v. 0.1}
\title{Test}
 \date{\today{,} \currenttime}
 \begin{document}
\maketitle
\begin{abstract}
\end{abstract}\pagestyle{fancy}
\fancyhead{}
\fancyfoot{}
\fancyhead[LO,RE]{{\footnotesize  Draft Compilation: \today{,}
\currenttime{.}}}
\fancyhead[RO,LE]{\thepage\ } 

\breakhref{http://ru.wikipedia.org/wiki/\textcyrillic{Елена{\_}Стасова}}{
http://ru.wikipedia.org/wiki/\textcyrillic{Елена{\_}Стасова}}

\end{document}

答案1

感谢 TeX Live 邮件列表的人们,我了解到我需要对西里尔字符串进行 urlencode 编码。另请注意,要获取编码后的 URL,您只需从 Firefox(也可能是其他浏览器)剪切并粘贴即可。

因此对于https://ru.wikipedia.org/wiki/Большой_террор,以下方法可以很好地工作:

{\breakhref{https://ru.wikipedia.org/wiki/%D0%91%D0%BE%D0%BB%D1%8C%D1%88%D0%BE%D0%B9_%D1%82%D0%B5%D1%80%D1%80%D0%BE%D1%80}{https://ru.wikipedia.org/wiki/{\textcyrillic{Большой\_террор}}}}

注意,我们似乎需要将 \textcyrillic 括在 {} 内。

事实上,如果您尝试将上述 URL 作为 URL 插入此消息本身中,您可能会检查相同的技巧: 尝试将 url 作为链接插入到此帖子中

希望能帮助到你

相关内容