
Estoy intentando usar látex para escribir algo en polaco. Estoy usando babel
el 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:
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 Polish
el idioma no está definida hyperref
para las \...autorefname
macros.
hyperref
aú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 \##1autorefname
sobre la marcha.
Si figure=\figurename
se da, usa el nombre de \figurename
etc, si solo X
se da el nombre del contador, intenta usar \Xname
, que no está definido en ningún caso.
Como no hablo polaco, he usado PolishSectionName
etc. 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}
Una versión similar, definiendo \HyLang@polish
de manera análoga a HyLang@french
etc.
\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}