我需要修改标题。现在它看起来像这样:
我需要的内容:
其中“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}