Вот такой получился рабочий код:
\documentclass[
a4paper,% размеры листа
11pt,% размеры нормального шрифта
toc=bibliography% включить в содержание литературу
]{scrbook} % книга KOMAscript, см. scrguien.pdf
\usepackage[T2A]{fontenc}% Выбор внутренней TeX−кодировки
\usepackage[utf8]{inputenc}% Выбор кодовой страницы документа.
\usepackage[english,russian]{babel}% Выбор языка документа.
\usepackage{indentfirst}% Начинать первый параграф с красной строки.
\usepackage{xcolor}% Для работы с цветами, включая гиперссылки
\usepackage{stringenc}% Конвертер кодировок, позволяет из utf8 делать utf16le
\usepackage[hyperfootnotes=false,pagebackref=true,pdftex]{hyperref}% Для гиперссылок, включая из оглавления, на библиографию и обратные
\hypersetup{
colorlinks=true% ссылки будут выделяться цветом, а не рамкой
}
\title{Пробный заголовок}
\subtitle{пробной книги}
\author{епрос}
\date{\today}
\def\setcatcodes#1#2#3{% байтам в диапазоне #1-#2 устанавливает каткод #3
\ifnum #1<\numexpr 1+#2\relax\catcode#1=#3\expandafter
\setcatcodes\expandafter{\the\numexpr 1+#1\relax}{#2}{#3}\fi}
\makeatletter
\StringEncodingConvert\reauthor{\expandafter\detokenize\expandafter{\@author}}{utf8}{utf16le}% перекодируем имя автора в utf-16le
\let\oldbibcite=\bibcite% сохраняем старую версию макроса, записывающего номера источников для ссылок на литературу
\def\bibcite#1#2{% новая версия макроса
\oldbibcite{#1}{#2}% выполяет всё то же, что и старая, чтобы где нужно ссылки на литературу были с гиперссылками
\@newl@bel{B}{#1\@extra@binfo}{#2}% и определяет новую переменную, в которую записывается номер источника без гиперссылок
}%
\makeatother
\def\mycite#1{[\expandafter\ifx\csname B@#1\endcsname\relax?\else\csname B@#1\endcsname\fi]}% ссылки на литературу без гиперссылок
% Макрос создаёт сноску с всплывающей подсказкой (второй аргумент); первый агрумент - содержимое нормальной сноски внизу страницы
\def\myfootnote#1{%
\begingroup\setcatcodes{128}{255}{12}\myfootnoteaux{#1}}
\def\myfootnoteaux#1#2{%
\edef\myfootipUTFeight{#2}%
\StringEncodingConvert\myfootip{\myfootipUTFeight}{utf8}{utf16le}%
\pdfstartlink user{%
/Subtype /Text% создаётся аннотация типа Text
/T (\detokenize{^^ff^^fe}\reauthor)% автор аннотации; префикс перед \reauthor согласно формату pdf идентифицирует строку UTF-16LE
/Contents (\detokenize{^^ff^^fe}\myfootip)% текст аннотации
/AP <<
/N \emptyicon\space 0 R% ссылка на создаваемый в начале документа объект pdf - основной вид значка аннотации
/R \emptyicon\space 0 R% вид значка при наведённом указателе мыши
/D \emptyicon\space 0 R% вид значка при нажатой кнопке мыши
>>
}%
\footnote{#1}%
\pdfendlink%
\endgroup% изменённые каткоды байтов 128-255 действуют досюда
}%
\begin{document}
\maketitle
\tableofcontents
% Этот код создаёт объект pdf - пустой бокс для использования вместо стандартного значка текстовой аннотации
\newbox\tempboxa
\setbox\tempboxa=\hbox{}
\immediate\pdfxform\tempboxa
\edef\emptyicon{\the\pdflastxform}% сохраняем номер объекта для использования при вызове макроса \myfootnote
\part{Пробная часть}
\chapter{Пробная глава}
\section{Пробный раздел}
Что же позволяет говорить не просто об эквивалентности, а о равенстве объектов? Для этого они должны быть ещё и неразличимы. Принцип, отождествляющий неразличимость и равенство объектов, известен как <<закон Лейбница>>\myfootnote{См. переписку Лейбница с Кларком в~\cite{leibniz_tom1}.}{См. переписку Лейбница с Кларком в \mycite{leibniz_tom1}.}.
{\raggedright
\begin{thebibliography}{99}
\bibitem{leibniz_tom1}Г.\,В.~Лейбниц. Сочинения в четырёх томах (под редакцией В.\,В.~Соколова, 1982). Том 1. Упоминается на с.\!\!
\end{thebibliography}
}
\end{document}
Я решил перекодировать каткоды не русским буквам, а всем байтам в диапазоне кодов 128-255. Всё равно там ничего, кроме "активных символов" нет. Для русских букв перекодировка срабатывает для байтов с кодами 128-191,208,209. С учётом того, что у меня в комментариях попадаются и греческие буквы с матсимволами и т.п., думаю, что так будет правильнее.
Огромное спасибо за неоценимую помощь!
Остаётся только понять, как сделать, чтобы 2 раза сноску не писать. Я что-то видел на эту тему на tex.SE, надо то ли записать аргумент в файл и сделать \input, то ли даже без записи в файл как-то можно обойтись.
Это уже не столь критично, поскольку второй аргумент заполняется один раз копипастом из сгенерированного pdf-файла. Таким образом нормально отображаются даже большинство матформул (не считая "многоэтажных" - типа дробей, индексов и форматирований). Так что это не напрягает так сильно, как номера источников в ссылках на библиографию, которые могут в любой момент съехать и их придётся везде перепроверять.
Наверное, в принципе можно было бы что-то придумать. Но проблема в том, что скомпилированный текст в pdf вносится отнюдь не в форме строк символов unicode. Конечно, для целей копипаста предусмотрена такая вещь, как "коды unicode выделенных символов", которые нормальные pdf-ридеры способны прочитать из соответствующих объектов файла pdf, а потом, при нажатии пользователем Ctrl-C, сформировать из них строку в буфере обмена. Но как их выцепить на этапе компиляции исходного кода pdfTeX я пока не знаю.