¿Cambiar el idioma de autoref?

¿Cambiar el idioma de autoref?

Estoy intentando usar látex para escribir algo en polaco. Estoy usando babelel paquete junto con hyperref. Pensé que esto sería suficiente, pero aparentemente no lo es.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[polish]{babel}
\usepackage[utf8]{inputenc}

\usepackage{hyperref}

\begin{document}
\section{foo}
\label{sec:here}

\begin{figure}
\caption{\label{fig:here} This is a figure caption}
\end{figure}

\autoref{sec:here}

\autoref{fig:here}
\end{document}

Esto produce:

producción

Como puede ver, el título de la figura está escrito correctamente en polaco, pero las autorreferencias todavía están en inglés.

Supongo que debería ser algo sencillo. Por ejemplo, la preguntaNombres de autoref incorrectos al usar la función `main=` de Babelsugiere que lo anteriordeberíatrabajar. Todo el resto del material que pude encontrar en StackExchange o Google se centró en usos más específicos que el que estoy describiendo.

Entonces, ¿qué me estoy perdiendo?

Una posible solución que conozco es definir manualmente todos esos nombres a través de \def\figureautorefname, pero espero que alguien ya lo haya hecho en un paquete público y se mantenga adecuadamente.

Respuesta1

Lamentablemente, la compatibilidad con Polishel idioma no está definida hyperrefpara las \...autorefnamemacros.

hyperrefaún no es compatible english,afrikaans,french,german,spanish,catalan,portuges,magyar, russian,italian,vietnamese, a partir de la versión 6.85a del 14/03/2017.

Una prueba de una solución:

la macro

\ProvidePolishAutoRefNames{figure=\figurename,chapter,section={PolishSectionName},table,equation={PolishEquationName}}

recorre los nombres de los contadores que se proporcionan en una lista separada por comas y genera el \##1autorefnamesobre la marcha.

Si figure=\figurenamese da, usa el nombre de \figurenameetc, si solo Xse da el nombre del contador, intenta usar \Xname, que no está definido en ningún caso.

Como no hablo polaco, he usado PolishSectionNameetc. como reemplazo.

\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage[polish]{babel}
\usepackage[utf8]{inputenc}

\usepackage{xparse}

\ExplSyntaxOn
\cs_generate_variant:Nn \cs_gset:cpn {cpx,cpo}
\NewDocumentCommand{\ProvidePolishAutoRefNames}{m}{%
  \seq_set_from_clist:Nn \l_tmpa_seq {#1}
  \seq_map_inline:Nn \l_tmpa_seq {% Loop through names
    \seq_set_split:Nnn \l_tmpb_seq {=} {##1}
    \tl_set:Nx \l_tmpa_tl {\seq_item:Nn \l_tmpb_seq {1} autorefname}
    \int_compare:nNnTF {\seq_count:N \l_tmpb_seq } > {1} {% Check whether there is a "=", if so, use the RHS 
      \cs_gset:cpx {\l_tmpa_tl} {\seq_item:Nn \l_tmpb_seq {2}}
    }{% No, try to evaluate \##1name, e.g. \chaptername
      \cs_gset:cpx {\l_tmpa_tl} {\use:c{\seq_item:Nn \l_tmpb_seq {1}name}}
    }
  }
}
\ExplSyntaxOff

\usepackage{hyperref}

\addto\captionspolish{%
  \ProvidePolishAutoRefNames{figure=\figurename,chapter,section={PolishSectionName},table,equation={PolishEquationName}}
}

\begin{document}

\chapter{Foo chapter}\label{foochapter}



\section{foo}

\figureautorefname

\label{sec:here}

\begin{figure}
\caption{\label{fig:here} This is a figure caption}
\end{figure}

\begin{equation} 
  E=mc^{2} \label{fooequation}
\end{equation}

See \autoref{foochapter} or \autoref{fooequation}

\autoref{sec:here}

\autoref{fig:here}
\end{document}

ingrese la descripción de la imagen aquí

Una versión similar, definiendo \HyLang@polishde manera análoga a HyLang@frenchetc.

\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage[polish]{babel}
\usepackage[utf8]{inputenc}

\usepackage{xparse}

\ExplSyntaxOn
\cs_generate_variant:Nn \cs_gset:cpn {cpx,cpo}
\NewDocumentCommand{\ProvidePolishAutoRefNames}{m}{%
  \seq_set_from_clist:Nn \l_tmpa_seq {#1}
  \seq_map_inline:Nn \l_tmpa_seq {% Loop through names
    \seq_set_split:Nnn \l_tmpb_seq {=} {##1}
    \tl_set:Nx \l_tmpa_tl {\seq_item:Nn \l_tmpb_seq {1} autorefname}
    \int_compare:nNnTF {\seq_count:N \l_tmpb_seq } > {1} {% Check whether there is a "=", if so, use the RHS 
      \cs_gset:cpx {\l_tmpa_tl} {\seq_item:Nn \l_tmpb_seq {2}}
    }{% No, try to evaluate \##1name, e.g. \chaptername
      \cs_gset:cpx {\l_tmpa_tl} {\use:c{\seq_item:Nn \l_tmpb_seq {1}name}}
    }
  }
}
\ExplSyntaxOff

\usepackage{hyperref}


\makeatletter
\def\HyLang@polish{
  \ProvidePolishAutoRefNames{figure=\figurename,chapter,section={PolishSectionName},table,equation={PolishEquationName}}
}

\HyLang@DeclareLang{polish}{polish}{}

\makeatother



\begin{document}

\chapter{Foo chapter}\label{foochapter}



\section{foo}

\figureautorefname

\label{sec:here}

\begin{figure}
\caption{\label{fig:here} This is a figure caption}
\end{figure}

\begin{equation} 
  E=mc^{2} \label{fooequation}
\end{equation}

See \autoref{foochapter} or \autoref{fooequation}

\autoref{sec:here}

\autoref{fig:here}
\end{document}

información relacionada