장 이름, 섹션 이름 및 하위 섹션 목록이 포함된 헤더

장 이름, 섹션 이름 및 하위 섹션 목록이 포함된 헤더

헤더를 수정해야 합니다. 이제 다음과 같습니다. 내가 가지고 있어야 할 것: 여기서 "DZIAŁ 1. PRZEPISY OGÓLNE"은 장이고 "Rozdział 2. Zasady ogólne"은 섹션이고 "Art 6-13"은 섹션의 모든 하위 섹션 목록입니다. 하위 섹션은 \subsection*{Art. 6 Zasada legalności} Is it even available 로 작성됩니다 . 내 코드:

\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카운터를 증가시키고, 그렇지 않으면 카운터를 주어진 인수로 설정합니다.

EDIT2: 헤더가 올바른 것 같아요. 그런데 페이지 번호는 어디에서 원하시나요?

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} 

관련 정보