Autoref-Sprache ändern?

Autoref-Sprache ändern?

Ich versuche, mit Latex etwas auf Polnisch zu schreiben. Ich verwende babeldas Paket zusammen mit hyperref. Ich dachte, das würde ausreichen, aber anscheinend ist das nicht der Fall.

\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}

Das Ergebnis:

Ausgabe

Wie Sie sehen, ist die Bildunterschrift korrekt auf Polnisch verfasst, die Autoreferenzen sind jedoch weiterhin auf Englisch.

Ich denke, es sollte etwas Einfaches sein. Zum Beispiel die FrageFalsche Autoref-Namen bei Verwendung der `main=`-Funktion von Babelschlägt vor, dass die obensollenArbeit. Alle anderen Materialien, die ich auf Stackexchange oder Google finden konnte, konzentrierten sich auf spezifischere Verwendungszwecke als den, den ich beschreibe.

Also, was übersehe ich?

Eine mir bekannte Möglichkeit zur Problemumgehung besteht darin, alle diese Namen manuell über zu definieren \def\figureautorefname, aber ich hoffe, dass dies bereits jemand in einem öffentlichen Paket getan hat und ordnungsgemäß gepflegt wird.

Antwort1

Leider ist für die Makros Polishkeine Sprachunterstützung definiert .hyperref\...autorefname

hyperrefunterstützt english,afrikaans,french,german,spanish,catalan,portuges,magyar, russian,italian,vietnamesenoch nicht, Stand Version 6.85a vom 14.03.2017.

Ein Versuch einer Lösung:

Das Makro

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

durchläuft die Zählernamen, die in einer durch Kommas getrennten Liste angegeben sind, und generiert sie \##1autorefnameim laufenden Betrieb.

Wenn figure=\figurenameangegeben ist, verwendet es den Namen aus \figurenameusw., wenn nur der Zählername Xangegeben ist, versucht es, zu verwenden \Xname, was in keinem Fall definiert ist.

Da ich kein Polnisch spreche, habe ich PolishSectionNameals Ersatz usw. verwendet.

\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}

Bildbeschreibung hier eingeben

Eine ähnliche Version, indem man \HyLang@polishanalog zu HyLang@frenchusw. definiert.

\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}

verwandte Informationen