Переопределить имя автоссылки для пользовательской среды уравнений

Переопределить имя автоссылки для пользовательской среды уравнений

Я не могу заставить ссылки, сделанные с помощью \autorefиз hyperrefпакета, в пользовательскую среду, основанную на equationсреде, использовать пользовательское имя. Вместо использования пользовательского имени такие ссылки используют "Equation".

Рассмотрим следующий пример:

\documentclass{article}

\usepackage{hyperref}

% Define a 'query' counter and environment, based on 'equation'
\newcounter{query}
\newenvironment{query}
{\refstepcounter{query}%
\renewcommand\theequation{Q\arabic{query}}\equation}
{\endequation}

% Attempt to override the name autoref uses for the query environment
\newcommand{\queryautorefname}{Query}

\begin{document}

A labelled instance of the query environment can be found below:
%
\begin{query}
    \label{q:my_query}
    Q(x) = ...
\end{query}

A reference to \autoref{q:my_query} using \texttt{autoref} uses the wrong name to refer to the environment (i.e., Equation rather than Query).

\end{document}

Эта проблема (как описано в примере) заключается в том, что ссылка, сделанная таким образом, будет читаться как "Уравнение Q1", хотя я хотел бы, чтобы она читалась как "Запрос Q1". Что я могу изменить, чтобы добиться этого?

Я открыт для другой стратегии, чтобы заставить это работать (например, другое определение среды query), но важно, чтобы содержимое среды queryбыло установлено в математический режим, и чтобы счетчик среды был независим от других счетчиков (например, счетчика equation). Использование cleverefвместо hyperrefв данном случае проблематично, так как это вызвало у меня проблемы в сочетании с svjour3классом шаблона/документа, который я обязан использовать.

решение1

\documentclass{article}

\usepackage{hyperref}

% Define a 'query' counter and environment, based on 'equation'
\newcounter{query}
\makeatletter
\newenvironment{query}
{\stepcounter{query}%
 \def\Hy@chapterstring{equation}%
 \def\Hy@chapapp{query}%
\renewcommand\theequation{Q\arabic{query}}\equation}
{\endequation}
\makeatother
% Attempt to override the name autoref uses for the query environment
\newcommand{\queryautorefname}{Query}

\begin{document}

A labelled instance of the query environment can be found below:
%
\begin{query}
    \label{q:my_query}
    Q(x) = ...
\end{query}

A reference to \autoref{q:my_query} using \texttt{autoref} uses the wrong name to refer to the environment (i.e., Equation rather than Query).

\end{document}

введите описание изображения здесь

Связанный контент