
Ich versuche, mit Latex etwas auf Polnisch zu schreiben. Ich verwende babel
das 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:
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 Polish
keine Sprachunterstützung definiert .hyperref
\...autorefname
hyperref
unterstützt english,afrikaans,french,german,spanish,catalan,portuges,magyar, russian,italian,vietnamese
noch 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 \##1autorefname
im laufenden Betrieb.
Wenn figure=\figurename
angegeben ist, verwendet es den Namen aus \figurename
usw., wenn nur der Zählername X
angegeben ist, versucht es, zu verwenden \Xname
, was in keinem Fall definiert ist.
Da ich kein Polnisch spreche, habe ich PolishSectionName
als 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}
Eine ähnliche Version, indem man \HyLang@polish
analog zu HyLang@french
usw. 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}