标题包含章节名称、节名称和子节列表

标题包含章节名称、节名称和子节列表

我需要修改标题。现在它看起来像这样: 我需要的内容: 其中“DZIAŁ 1. PRZEPISY OGÓLNE”是一章,“Rozdział 2. Zasady ogólne”是一个部分,“Art 6-13”是该部分中所有子部分的列表。子部分写为\subsection*{Art. 6 Zasada legalności} 有可能吗?我的代码:

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

答案1

我有一个解决方案,但我认为代码很糟糕。虽然它能用,但我不会称其为好代码,就像一个快速修复程序:

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

编辑:现在您有了环境subArts,它接受一个可选参数。如果没有给出参数,它只使用当前计数器值,如果给出了参数并且该参数是字符串,则step它会增加计数器,否则将计数器设置为给定的参数。

编辑2:我想我的标题写对了。但是你想把页码放在哪里呢?

EDIT3:下面的代码大致相同,但它不是在每次调用时打印到 .Art 文件中\Art,而是每次只打印一次\Art@mark,从而大大减少了必要的打印。我不知道是减少不必要的打印但使用更多变量更好,还是减少变量量更好。

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

相关内容