Kopfzeile mit Kapitelname, Abschnittsname und Liste der darin enthaltenen Unterabschnitte

Kopfzeile mit Kapitelname, Abschnittsname und Liste der darin enthaltenen Unterabschnitte

Ich muss meine Kopfzeile ändern. Jetzt sieht sie so aus: Was ich brauche: Wobei „DZIAŁ 1. PRZEPISY OGÓLNE“ ein Kapitel ist, „Rozdział 2. Zasady ogólne“ ein Abschnitt und „Art 6-13“ eine Liste aller Unterabschnitte im Abschnitt. Unterabschnitte werden so geschrieben: \subsection*{Art. 6 Zasada legalności} Ist das überhaupt möglich? Mein Code:

\documentclass[a4paper,12pt,twoside]{report}
\usepackage{polski}
\usepackage[utf8]{inputenc}
\usepackage{sectsty}
\usepackage{scrlayer-scrpage}
\pagestyle{scrheadings}
\renewcommand{\chaptermark}[1]{% 
\markboth{\space #1}{}}
\renewcommand{\sectionmark}[1]{
\markright{\thesection.\space #1}}%\hspace{0.5cm}}}
\begin{document}
\chapter{DZIAŁ I. PRZEPISY OGÓLNE}
\section{Rozdział 2. Zasady ogólne}
\subsection*{Art. 6 Zasada legalności }\noindent

\subsection*{Art. 7. Zasada uwzględniania interesu publicznego i słusznego interesu obywateli }

\subsection*{Art. 8. Zasada pogłębiania zaufania do organów państwa }\noindent

\subsection*{Art. 9. Obowiązek udzielania informacji faktycznej i prawnej stronom }\noindent

\subsection*{Art. 10. Zasada czynnego udziału stron w postępowaniu administracyjnym }\noindent

\subsection*{Art. 11. Zasada wyjaśniania zasadności decyzji lub postanowienia }\noindent

\subsection*{Art. 12. Zasada szybkości postępowania }\noindent

\subsection*{Art. 13. Załatwianie spornych spraw w drodze ugody administracyjnej }\noindent

\subsection*{Art. 14. Forma pisemna lub forma dokumentu elektronicznego }\noindent

\subsection*{Art. 15. Zasada dwuinstancyjności postępowania administracyjnego }\noindent

\subsection*{Art. 16. Zasady ogólne trybu odwoławczego }\noindent
\end{document} 

Antwort1

Ich habe eine Lösung für Ihr Problem, aber die Codierung ist meiner Meinung nach ziemlich schlecht. Obwohl es funktioniert, würde ich diesen Code nicht als gut bezeichnen, sondern als eine schnelle Lösung:

\documentclass[a4paper,12pt,twoside]{report}
\usepackage{polski}
\usepackage[utf8]{inputenc}
\usepackage{sectsty}
\usepackage{scrlayer-scrpage}

\pagestyle{scrheadings}

\lohead*{\rightmark}
\rohead*{\leftmark}
\lehead*{\rightmark}
\rehead*{\leftmark}
\renewcommand{\chaptermark}[1]{\markboth{\emph{\textbf{\Artborders}}}{#1}}
\renewcommand{\sectionmark}[1]{\markleft{#1~\emph{\textbf{\ArtBorders}}}}

\makeatletter
\IfFileExists{./\jobname.Art}{\input{\jobname.Art}}{}
\newwrite\ArtFile
\immediate\openout\ArtFile=\jobname.Art
\newcounter{Art@counter}
\newcommand{\Art}[2][]{%
    \ifx\relax#1\relax%
    \else%
        \setcounter{Art@counter}{\numexpr #1-1}%
    \fi%
    \refstepcounter{Art@counter}%
    \subsection*{Art.~\theArt@counter.~#2}%
    \ifcsname Art@firstC\roman{chapter}S\roman{section}\endcsname\else%
        \global\expandafter\edef\csname Art@firstC\roman{chapter}S\roman{section}\endcsname{\theArt@counter}%
    \fi%
    \expandafter\edef\csname Art@lastC\roman{chapter}S\roman{section}\endcsname{\theArt@counter}%
    \edef\@@Artfirst{\csname Art@firstC\roman{chapter}S\roman{section}\endcsname}%
    \edef\@@Artlast{\csname Art@lastC\roman{chapter}S\roman{section}\endcsname}%
    \immediate\write\ArtFile{%
        \expandafter\def\expandafter\noexpand\csname Art@markC\roman{chapter}S\roman{section}\endcsname{%
            \csname Art@firstC\roman{chapter}S\roman{section}\endcsname%
            \ifx\@@Artfirst\@@Artlast\else%
                -%
                \csname Art@lastC\roman{chapter}S\roman{section}\endcsname%
            \fi%
        }
    }
}
\newcounter{Art@counterbak}%
\newenvironment{subArts}[1][]{%
    \ifx\relax#1\relax%
        \setcounter{Art@counterbak}{\theArt@counter}%
    \else%
        \def\subArt@test{#1}%
        \def\subArt@string{step}%
        \ifx\subArt@test\subArt@string%
            \setcounter{Art@counterbak}{\numexpr\theArt@counter+1}%
        \else%
            \setcounter{Art@counterbak}{#1}%
        \fi%
    \fi%
    \setcounter{Art@counter}{0}%
    \renewcommand{\theArt@counter}{\arabic{Art@counterbak}\alph{Art@counter}}%
}{%
    \setcounter{Art@counter}{\theArt@counterbak}%
}
\newcommand{\ArtBorders}{%
    \ifcsname Art@markC\roman{chapter}S\roman{section}\endcsname%
        Art.~\csname Art@markC\roman{chapter}S\roman{section}\endcsname%
    \fi%
}
\AtEndDocument{\immediate\closeout\ArtFile}
\makeatother

\begin{document}
\chapter{DZIAŁ I. PRZEPISY OGÓLNE}
\section{Rozdział 2. Zasady ogólne}
%\thispagestyle{scrheadings}
\begin{subArts}[6]
\Art{Zasada legalności }\noindent
\Art{Zasada uwzględniania interesu publicznego i słusznego interesu obywateli }\noindent
\end{subArts}
\pagebreak
\Art{Zasada pogłębiania zaufania do organów państwa }\noindent
\pagebreak
\Art{Obowiązek udzielania informacji faktycznej i prawnej stronom }\noindent
\Art{Zasada czynnego udziału stron w postępowaniu administracyjnym }\noindent
\Art{Zasada wyjaśniania zasadności decyzji lub postanowienia }\noindent
\begin{subArts}
\Art{Zasada szybkości postępowania }\noindent
\Art{Załatwianie spornych spraw w drodze ugody administracyjnej }\noindent
\end{subArts}
\Art{Forma pisemna lub forma dokumentu elektronicznego }\noindent
\Art{Zasada dwuinstancyjności postępowania administracyjnego }\noindent
\begin{subArts}[step]
\Art{Zasady ogólne trybu odwoławczego }\label{art:zas}\noindent
\Art{test}
\Art{test2}\label{art:test2}
\end{subArts}
See Art. \ref{art:zas} and \ref{art:test2}.
\end{document} 

BEARBEITEN: Jetzt haben Sie die Umgebung subArts, die ein optionales Argument akzeptiert. Wenn kein Argument angegeben ist, wird einfach der aktuelle Zählerwert verwendet, wenn ein Argument angegeben ist und es sich dabei um die Zeichenfolge handelt, wird stepder Zähler erhöht, andernfalls wird der Zähler auf das angegebene Argument gesetzt.

EDIT2: Ich glaube, ich habe deine Überschriften richtig. Aber wo möchtest du die Seitenzahlen?

EDIT3: Der folgende Code macht ungefähr dasselbe, aber anstatt bei jedem Aufruf von in die .Art-Datei zu drucken \Art, druckt er nur einmal für jeden \Art@mark, wodurch die notwendigen Ausdrucke drastisch reduziert werden. Ich weiß nicht, ob es besser ist, unnötige Ausdrucke zu reduzieren, aber mehr Variablen zu verwenden oder die Anzahl der Variablen zu reduzieren.

\documentclass[a4paper,12pt,twoside]{report}
\usepackage{polski}
\usepackage[utf8]{inputenc}
\usepackage{sectsty}
\usepackage{scrlayer-scrpage}

\pagestyle{scrheadings}

\lohead*{\rightmark}
\rohead*{\leftmark}
\lehead*{\rightmark}
\rehead*{\leftmark}
\renewcommand{\chaptermark}[1]{\markboth{\emph{\textbf{\ArtBorders}}}{#1}}
\renewcommand{\sectionmark}[1]{\markleft{#1~\emph{\textbf{\ArtBorders}}}}

\makeatletter
\newcount\Art@printcount
\Art@printcount=0
\newcount\Art@printpos
\Art@printpos=0
\def\Art@addprint{%
    \global\advance\Art@printcount by 1%
    \global\expandafter\edef\csname Art@printqueue\the\Art@printcount\endcsname{%
        C\roman{chapter}S\roman{section}%
    }%
}
\def\Art@print{%
    \loop\ifnum\Art@printcount>\Art@printpos%
    \advance\Art@printpos by 1%
    \edef\@@ArtcurCS{\csname Art@printqueue\the\Art@printpos\endcsname}
    \edef\@@Artfirst{\csname Art@first\@@ArtcurCS\endcsname}
    \edef\@@Artlast{\csname Art@last\@@ArtcurCS\endcsname}
    \immediate\write\ArtFile{%
        \expandafter%
        \def\expandafter\noexpand\csname Art@mark\@@ArtcurCS\endcsname{%
            \@@Artfirst%
            \ifx\@@Artfirst\@@Artlast\else%
                -%
                \@@Artlast%
            \fi%
        }%
    }%
    \repeat%
}

\IfFileExists{./\jobname.Art}{\input{\jobname.Art}}{}
\newwrite\ArtFile
\immediate\openout\ArtFile=\jobname.Art
\newcounter{Art@counter}[section]
\newcommand{\Art}[2][]{%
    \ifx\relax#1\relax%
    \else%
        \setcounter{Art@counter}{\numexpr #1-1}%
    \fi%
    \refstepcounter{Art@counter}%
    \subsection*{Art.~\theArt@counter.~#2}%
    \edef\@@ArtcurCS{C\roman{chapter}S\roman{section}}%
    \ifcsname Art@first\@@ArtcurCS\endcsname\else%
        \global\expandafter\edef\csname Art@first\@@ArtcurCS\endcsname{%
            \theArt@counter%
        }%
        \Art@addprint%
    \fi%
    \global\expandafter\edef\csname Art@last\@@ArtcurCS\endcsname{%
        \theArt@counter%
    }%
}
\newcounter{Art@counterbak}%
\newenvironment{subArts}[1][]{%
    \ifx\relax#1\relax%
        \setcounter{Art@counterbak}{\theArt@counter}%
    \else%
        \def\subArt@test{#1}%
        \def\subArt@string{step}%
        \ifx\subArt@test\subArt@string%
            \setcounter{Art@counterbak}{\numexpr\theArt@counter+1}%
        \else%
            \setcounter{Art@counterbak}{#1}%
        \fi%
    \fi%
    \setcounter{Art@counter}{0}%
    \renewcommand{\theArt@counter}{\arabic{Art@counterbak}\alph{Art@counter}}%
}{%
    \setcounter{Art@counter}{\theArt@counterbak}%
}
\newcommand{\ArtBorders}{%
    \ifcsname Art@markC\roman{chapter}S\roman{section}\endcsname%
        Art.~\csname Art@markC\roman{chapter}S\roman{section}\endcsname%
    \fi%
}
\AtEndDocument{\Art@print\immediate\closeout\ArtFile}
\makeatother

\begin{document}
\chapter{DZIAŁ I. PRZEPISY OGÓLNE}
\section{Rozdział 2. Zasady ogólne}
%\thispagestyle{scrheadings}
\begin{subArts}[6]
\Art{Zasada legalności }\noindent
\Art{Zasada uwzględniania interesu publicznego i słusznego interesu obywateli }\noindent
\end{subArts}
\pagebreak
\Art{Zasada pogłębiania zaufania do organów państwa }\noindent
\pagebreak
\Art{Obowiązek udzielania informacji faktycznej i prawnej stronom }\noindent
\Art{Zasada czynnego udziału stron w postępowaniu administracyjnym }\noindent
\Art{Zasada wyjaśniania zasadności decyzji lub postanowienia }\noindent
\begin{subArts}
\Art{Zasada szybkości postępowania }\noindent
\Art{Załatwianie spornych spraw w drodze ugody administracyjnej }\noindent
\end{subArts}
\Art{Forma pisemna lub forma dokumentu elektronicznego }\noindent
\Art{Zasada dwuinstancyjności postępowania administracyjnego }\noindent
\begin{subArts}[step]
\Art{Zasady ogólne trybu odwoławczego }\label{art:zas}\noindent
\Art{test}
\Art{test2}\label{art:test2}
\end{subArts}
See Art. \ref{art:zas} and \ref{art:test2}.
\chapter{test chapter}
\Art{the art of war}
\end{document} 

verwandte Informationen