KOMA scrartcl отступ по разделу

KOMA scrartcl отступ по разделу

так что я знаю, что это не лучшая практика, но у меня есть шаблон, который мне нужно воспроизвести, и слова облегчают это... Мне нужно сделать отступ для всего текста (а не только \parindent) в зависимости от уровня. Мне нужно установить это для заголовка и текста отдельно, например

  1. Раздел, Заголовок(вкл. номер) на левом поле
  2. Раздел, Текстотступ 0,7 см от левого поля
  3. Подраздел, Заголовокв тексте с разделом, например, с отступом 0,7 см от левого поля
  4. Подраздел, Текстотступ 1,4 см от левого поля

Есть ли простой способ сделать это с помощью KOMA?

Текущее состояние документа

\documentclass[11pt, oneside, a4]{scrartcl}

% Packages, Design
\usepackage[top=1.5cm, bottom=2.5cm, left=2.5cm, right=1.6cm]{geometry}
\usepackage{lipsum}
\pagestyle{empty}
%\usepackage{showframe}

% Section style
\setkomafont{section}{\bfseries\fontsize{14pt}{14pt}\selectfont}
\setkomafont{subsection}{\bfseries}
\setkomafont{subsubsection}{\bfseries}

\RedeclareSectionCommand[
beforeskip=-2\baselineskip,
afterskip=0.2\baselineskip,
]{section}

\RedeclareSectionCommands[
beforeskip=-2\baselineskip,
afterskip=0.2\baselineskip
]{subsection, subsubsection}

% Opening
\title{Report}
\author{A Anme}

\begin{document}

\section{Test 1}
Text\\
More text on a second line\par
\lipsum
\section{Test 2}
Text\\
Equation: 
\begin{equation}
    E = m\cdot c^2
\end{equation}
\subsection{Test 2 2}
Text
\subsubsection{TestSub}
Something

\end{document}

решение1

Сделать что-то вроде этого не так тривиально, как кажется. Левое поле — это значение, которое всегда используется для всей страницы. Поэтому, чтобы добавить дополнительное левое поле, вы можете либо переместить все содержимое подраздела… в окружение, например, с отступом minipage(проблема: нет разрыва страницы), или addmargin, или, может быть, даже tcolorbox, или вы можете манипулировать \leftskip. В следующем примере я делаю последнее (и использую общие хуки LaTeX от 2020/10/01) и дополнительно переопределяю \sectionlinesformat(см. руководства KOMA-Script для получения дополнительной информации об этом):

\documentclass{scrartcl}% All default options removed

% Packages, Design
\usepackage[top=1.5cm, bottom=2.5cm, left=3.2cm, right=1.6cm]{geometry}% left
                                % margin increased by the text indent of
                                % sections

\usepackage{mwe}
\pagestyle{empty}
%\usepackage{showframe}

% Section style
\setkomafont{section}{\bfseries\fontsize{14pt}{14pt}\selectfont}
\setkomafont{subsection}{\bfseries}
\setkomafont{subsubsection}{\bfseries}

\makeatletter
\renewcommand*{\sectionlinesformat}[4]{%
  \hskip#2\parbox{\dimexpr\linewidth+0.7cm}{%
    \@hangfrom{#3}{#4}%
  }%
}
\makeatother

\RedeclareSectionCommand[
  indent=-0.7cm,
  runin=false,
  afterindent=false,
  beforeskip=2\baselineskip,
  afterskip=0.2\baselineskip,% IMHO not enough
]{section}

\RedeclareSectionCommands[
  indent=0cm,
  afterindent=false,
  beforeskip=2\baselineskip,
  afterskip=0.2\baselineskip,% IMHO not enough
]{subsection, subsubsection}

\AddToHook{cmd/section/before}{%
  \par
  \setlength{\leftskip}{0pt}%
  \setlength{\linewidth}{\textwidth}%
}
\AddToHook{cmd/subsection/before}{%
  \par
  \setlength{\leftskip}{0.7cm}%
  \setlength{\linewidth}{\textwidth}%
  \addtolength{\linewidth}{-\leftskip}%
}

% Opening
\title{Report}
\author{A Anme}

\begin{document}
\tableofcontents

\section{Test 1}
\lipsum[1]
\begin{itemize}
\item Testitem
\item Testitem
\end{itemize}
\lipsum[2-3]

\section{Test 2}
\lipsum[1]
\begin{equation}
    E = m\cdot c^2
\end{equation}
\lipsum[2]
\subsection{Test 2 2}
\lipsum[3]
\subsubsection{TestSub}
\lipsum[4]

\blinddocument

\end{document}

На страницах 1 и 2 это, кажется, соответствует запросу:

страницы 1 и 2 с требуемыми отступами

Но отступ списков на страницах 3 и 4 неверный:

две страницы с неправильным отступом списка

Если это для вас актуально, вам также придется изменить \leftmarginiи т. д. в хуках. В качестве альтернативы вы можете использовать package enumitemдля адаптации списков.

Могут быть и другие проблемы с изменением \leftskipпочти всего документа. Например, среды, полученные из trivlistподобныхaddmargin также могутвести себя странно.

Так что ИМХО, ответ на ваш вопрос

Есть ли простой способ сделать это с помощью KOMA?

будет: Нет, нелегко.

Связанный контент