如何使用阿拉伯数字和罗马数字来构造目录?

如何使用阿拉伯数字和罗马数字来构造目录?

我想要实现的是,我的文档的前几个部分和包含的页码应该是英文的,roman而文档的其余部分应该以arabic数字形式显示。

像这样:

我 ....

二....

1 ....

2 ....

3 ....

现在一切正常,页码和章节都按我想要的方式编号。但我有以下问题:如果我单击目录中“阿拉伯语部分”的第一部分,它会跳转到第一个“罗马语部分”。这种情况发生在“罗马语部分”的数量上。如果我单击第三个“阿拉伯语部分”,它就没问题了。

如果我在目录中单击它,我只想跳转到正确的部分。

这就是我所拥有的:

 \documentclass[12pt, a4paper, ngerman, oneside, bibtotoc, liststotoc, bibtotocnumbered, toctotoc]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\newcommand{\sectionnumbering}[1]{% 
  \setcounter{section}{0}% 
    \renewcommand{\thesection}{\csname #1\endcsname{section}}}

\begin{document}
    \section{Deckblatt}
    ...

    \pagenumbering{roman} 
    \sectionnumbering{Roman}
    \pagestyle{empty}

    \section{Erklaerung}

    \section{Sperrvermerk}  

    \tableofcontents
    \newpage
    \listoffigures
    \clearpage

    \pagenumbering{arabic} 
    \sectionnumbering{arabic}

    \pagestyle{fancy}
    \renewcommand{\sectionmark}[1]{\markright{\thesection{} #1}{}}

    \section{KapitelEinleitung}
    \section{...}
\end{document}

我尝试使用\newcounter{}和尝试了一些建议的解决方案\setcounter{}{},但没有成功。

答案1

OP 描述的这种行为的原因是重置了部分计数器,因此造成混淆hyperref。使用hypertexnames=false作为选项hyperref将生成唯一的页面锚链接名称。

 \documentclass[12pt, a4paper, ngerman, oneside, bibtotoc, liststotoc, bibtotocnumbered, toctotoc]{scrartcl}
\usepackage{fancyhdr}
\usepackage[utf8x]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[unicode,hypertexnames=false]{hyperref}
\usepackage{bookmark}
\PrerenderUnicode{ä}


\pagestyle{fancy}
\fancyhf{}
\newcommand{\sectionnumbering}[1]{% 
  \setcounter{section}{0}% 
  \renewcommand{\thesection}{\csname #1\endcsname{section}}%
}%

\begin{document}
\section{Deckblatt}

\pagenumbering{roman} 
\sectionnumbering{Roman}
\pagestyle{empty}
\section{Erklärung}
\section{Sperrvermerk}  
\clearpage
\tableofcontents
\newpage
\listoffigures
\clearpage

\pagenumbering{arabic} 
\sectionnumbering{arabic}

\pagestyle{fancy}
\renewcommand{\sectionmark}[1]{\markright{\thesection{} #1}{}}
\section{KapitelEinleitung}
\section{...}
\end{document}

答案2

我不得不欺骗 hyperref,让它以为你正在使用章节。

\documentclass[12pt, a4paper, ngerman, oneside, bibtotoc, liststotoc, bibtotocnumbered, toctotoc]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{fancyhdr}
\newcounter{chapter}% causes hyperref to use chapter numbers
\usepackage{hyperref}
\pagestyle{fancy}
\fancyhf{}

\newcommand{\sectionnumbering}[1]{% 
  \stepcounter{chapter}% used by hyperref only
  \setcounter{section}{0}% not automatic
    \renewcommand{\thesection}{\csname #1\endcsname{section}}}

\begin{document}
    \section{Deckblatt}
    ...

    \pagenumbering{roman} 
    \sectionnumbering{Roman}
    \pagestyle{empty}

    \section{Erklaerung}

    \section{Sperrvermerk}  

    \tableofcontents
    \newpage
    \listoffigures
    \clearpage

    \pagenumbering{arabic} 
    \sectionnumbering{arabic}

    \pagestyle{fancy}
    \renewcommand{\sectionmark}[1]{\markright{\thesection{} #1}{}}

    \section{KapitelEinleitung}
    \section{...}
 \end{document}

相关内容