答案1
您决定使用 scrbook 是一个好的开始。
我不是 KOMA-script 的专家,它确实是一个巨大的软件包。因此下面的代码可能不是最佳解决方案。
我真正无法解决的一件事是如何将目录中的条目居中打印并在右侧显示页码。
请针对您的所有问题提出具体问题。此处仅供您参考!
\documentclass[ngerman]{scrbook}
\usepackage[T1]{fontenc}
\usepackage{microtype}
\usepackage{babel}
\usepackage{libertine}
\usepackage{blindtext}
\addtokomafont{part}{\normalfont\bfseries}
\addtokomafont{partnumber}{\normalfont\itshape}
\setcounter{secnumdepth}{5} % fünf Ebenen
\renewcommand{\thechapter}{§~\arabic{chapter}}
\renewcommand*{\thesection}{\Alph{section}}
\renewcommand*{\thesubsection}{\Roman{subsection}}
\renewcommand*{\thesubsubsection}{\arabic{subsubsection}}
\renewcommand*{\theparagraph}{\alph{paragraph})}%)
\renewcommand*{\thesubparagraph}{\alph{subparagraph}\alph{subparagraph})}
\DeclareTOCStyleEntry[%
indentfollows=chapter,
numsep=2em,
dynnumwidth=true
]{tocline}{chapter}
\title{Meine Diss}
\author{Katharina H.}
\date{}
\begin{document}
\maketitle
\tableofcontents{}
\part{Das Phänomen des gutgläubigen Erwerbs}
\label{part:das-phanomen-des}
\blindtext
\chapter{Grundfragen des gutgläubigen Erwerbs}
\label{cha:grundfr-des-gutgl}
\blindtext{}
\section{Der Regelungsgegenstand}
\label{sec:der-regel}
Etwas Text.
\subsection{Zusammenwirken von diesem und jenem}
\label{sec:zusamm-von-dies}
zwei Worte.
\subsubsection{Abgrenzungskriterien}
\label{sec:abgrenzungskriterien}
\end{document}
撰写法学博士学位论文需要一些时间(我用了四年多的时间)。所以有足够的时间来研究手册。去买本书读一读。了解一下 LaTeX。
还有一件事:假设您处于第 2 部分第 14 B.III.2 条,并且想要引用第 14 B.III.1 条。我总是觉得给出完整的引用而不是写“参见上文 1.”很荒谬。因此,在此网站的帮助下,我终于开发了一个缩写系统,请参见此处: 缩写参考文献:仅列出必要的参考文献,不再赘述
我编写了一个包仅用于自己的目的,但如果没有太多帮助我永远不可能做到这一点,代码远远超出了我的工资等级:
% TODO:
% Paket soll auf verschiedene Optionen hören:
% - "inactive" => \secref ist nur \ref;
% - "Roman" => es gibt nur die Ebenen I. 1. a) aa)
% - "Alph" => Default, die Ebenen A. I. 1. a) aa)
% "inactive" ist am wichtigsten, weil damit die Laufzeit viel schneller wird.
% "inactive" ist eingebaut. Ob dadurch irgendwas schneller wird, weiß ich aber
% nicht.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{abbrev-ref}[2016/08/22 LaTeX2e Package for abbreviated references]
\RequirePackage{zref-user, zref-counter}
\RequirePackage{expl3, l3keys2e, xparse}
\newcommand{\leveldot}{.}
\setcounter{secnumdepth}{5} % fünf Ebenen
\renewcommand*{\thesection}{\Alph{section}\leveldot}
\renewcommand*{\thesubsection}{\Roman{subsection}\leveldot}
\renewcommand*{\thesubsubsection}{\arabic{subsubsection}\leveldot}
\renewcommand*{\theparagraph}{\alph{paragraph})}%)
\renewcommand*{\thesubparagraph}{\alph{subparagraph}\alph{subparagraph})}
%\makeatletter
\KOMAoptions{numbers=noenddot}
\zref@newprop{section}[1]{\the\c@section}
\zref@newprop{subsection}[1]{\the\c@subsection}
\zref@newprop{subsubsection}[1]{\the\c@subsubsection}
\zref@newprop{paragraph}[1]{\the\c@paragraph}
\zref@newprop{subparagraph}[1]{\the\c@subparagraph}
\zref@addprop{main}{section}
\zref@addprop{main}{subsection}
\zref@addprop{main}{subsubsection}
\zref@addprop{main}{paragraph}
\zref@addprop{main}{subparagraph}
\ExplSyntaxOn
\keys_define:nn { abbref-ref-experimental } { inactive .code:n =
\renewcommand{\leveldot}{.}
\renewcommand{\p@subsection}{\thesection}
\renewcommand{\p@subsubsection}{\thesection\thesubsection}
\renewcommand{\p@paragraph}{\thesection\thesubsection\thesubsubsection}
\renewcommand{\p@subparagraph}{\thesection\thesubsection\thesubsubsection\theparagraph\,}
\cs_set_eq:NN \secref \ref
}
\keys_set:nn {abbref-ref} {}
\ProcessKeysOptions {abbref-ref-experimental}
\ProvideDocumentCommand{\secref}{ m }{%
%\newcommand\secref[1]{%
\hyperref[#1]{%
\int_compare:nTF
{% A.-Ebene prüfen: sind wir auf dem gleichen Zweig?
\zref@extractdefault {#1} {section} {0} = \the\c@section
}
{ % Ja, wir sind auf dem gleichen Zweig
% Existiert eine weitere Ebene?
\int_compare:nTF
{\zref@extractdefault {#1} {subsection} {0} = 0}
% Wenn subsection 0 ist, also nicht existiert, dann muss section ausgegeben
% werden.
{
% \emph{Fehlerhafter Verweis}
\int_to_Alph:n {\zref@extractdefault {#1} {section} {0}}.%
}
% Wenn dagegen subsection existiert, dann geht die Prüfung weiter:
{
% OK, weitere ebene existiert.
\int_compare:nTF % I.-Ebene
{
\zref@extractdefault {#1} {subsection} {0} = \the\c@subsection
}% Sind wir auf der gleichen I.-Ebene?
{% I.-Ebene: Gleiche Ebene
% Prüfung: gibt es eine weitere Ebene?
\int_compare:nTF
{\zref@extractdefault {#1} {subsubsection} {0} = 0}
{% Wenn 0, dann keine weitere Ebene und subsection ausgeben:
\int_to_Roman:n {\zref@extractdefault {#1} {subsection} {0}}.%
}
{% OK, weitere Ebene existiert
\int_compare:nTF % subsubsection-Ebene
{% 1.-Ebene prüfen
\zref@extractdefault {#1} {subsubsection} {0} = \the\c@subsubsection
}
{% 1.-Ebene ist gleich
%Prüfung: gibt es eine weitere Ebene?
\int_compare:nTF % Gibt es eine a-Ebene?
{\zref@extractdefault {#1} {paragraph} {0} = 0}
{% Wenn 0, dann keine weitere Ebene und subsubsection ausgeben:
\int_to_arabic:n { \zref@extractdefault {#1} {subsubsection} {0}}.%
}
{% Paragraph existiert:
\int_compare:nTF % a-Ebene prüfen
{
\zref@extractdefault {#1} {paragraph} {0} = \the\c@paragraph
}
{% a-Ebene ist gleich
% Prüfung: aa-Ebene vorhanden?
\int_compare:nTF %
{ \zref@extractdefault {#1} {subparagraph} {0} = 0}
%
{%( damit emacs happy ist
\int_to_alph:n {\zref@extractdefault {#1} {paragraph} {0} })\,%
}
{% aa-Ebene vorhanden
\int_compare:nTF
{\zref@extractdefault {#1} {subparagraph} {0} = \the\c@subparagraph}
{\emph{Fehlerhafter VERWEIS}}
%( make emacs happy
{\int_to_alph:n { \zref@extractdefault {#1} {subparagraph} {0} }%
\int_to_alph:n { \zref@extractdefault {#1} {subparagraph} {0} })%
}
}
}
{% a-Ebene ist unterschiedlich (
\int_to_alph:n{\zref@extractdefault {#1} {paragraph} {0}})%
}
}
}
{% 1.-Ebene ist unterschiedlich
\int_to_arabic:n{\zref@extractdefault {#1} {subsubsection} {0}}.%
}
}% 3. Klammer Prüfung, ob subsection existiert (also wenn ja)
}
{% I.-Ebene: ungleich
% Also römische Nummer ausgeben
\int_to_Roman:n{\zref@extractdefault {#1} {subsection} {0}}.%
\int_compare:nTF%existiert die nächste Ebene?
{ \zref@extractdefault {#1} {subsubsection} {0} = 0 }
{}% = 0, subsubsection nicht vorhanden
{% ungleich 0
% also arabische Zahl ausgeben
\int_to_arabic:n { \zref@extractdefault {#1} {subsubsection} {0}}.%
\int_compare:nTF%existiert die nächste Ebene paragraph?
{ \zref@extractdefault {#1} {paragraph} {0} = 0 }
{}% = 0, subsubsection nicht vorhanden
{% ungleich 0 (
\int_to_alph:n { \zref@extractdefault {#1} {paragraph} {0}})\,%
}
% subpar Ebene vorhanden?
\int_compare:nTF
{ \zref@extractdefault {#1} {subparagraph} {0} = 0}
{}% ja, also existiert subpar nicht
{ %(
\int_to_alph:n {\zref@extractdefault {#1} {subparagraph} {0}}%
\int_to_alph:n {\zref@extractdefault {#1} {subparagraph} {0}})%
}
}
}% 3. Klammer I.-Ebene
}% 3. Klammer Prüfung, ob I. Ebene besteht.
}% 2. Klammer A.-Ebene
{% A.-Ebene: Ungleich
%ref is from other section
\int_to_Alph:n {\zref@extractdefault {#1} {section} {0}}.%
\int_compare:nTF%existiert die nächste Ebene?
{ \zref@extractdefault {#1} {subsection} {0} = 0 }
{}% ja, erfüllt, keine subsection
{% subsection existiert:
\int_to_Roman:n {\zref@extractdefault {#1} {subsection} {0}}.%
\int_compare:nTF%existiert die nächste Ebene?
{ \zref@extractdefault {#1} {subsubsection} {0} = 0 }
{}% = 0, subsubsection nicht vorhanden
{% ungleich 0
\int_to_arabic:n { \zref@extractdefault {#1} {subsubsection} {0} }.%
\int_compare:nTF%existiert die nächste Ebene paragraph?
{ \zref@extractdefault {#1} {paragraph} {0} = 0 }
{}% = 0, paragraph nicht vorhanden
{% ungleich 0 (
\int_to_alph:n { \zref@extractdefault {#1} {paragraph} {0} })\,%
\int_compare:nTF
{ \zref@extractdefault {#1} {subparagraph} {0} = 0}
{}% ja, also existiert subpar nicht
{% (
\int_to_alph:n {\zref@extractdefault {#1} {subparagraph} {0}}%
\int_to_alph:n {\zref@extractdefault {#1} {subparagraph} {0}})%
}
}
}
}
}% 3. Klammer A.-Ebene
}% hyperref Klammer zu
}%Ende Befehlsdefinition myref
\ExplSyntaxOff
\usepackage{bookmark}
\newcommand\seclabel[1]{\zlabel{#1}\label{#1}}
\endinput