我有一些部分没有直接文本(子部分除外)。对于这些空白部分,我试图让子部分文本(或标题)从与有文本的部分相同的位置开始。这似乎特定于使用标题的左边距格式。
以下是 MWE:
\documentclass[a4paper]{article}
\usepackage{titlesec,lipsum}
\titleformat{\section}[leftmargin]
{}
{}
{0em}
{}
\titlespacing{\section}
{0cm}{1cm}{2cm}
\begin{document}
\section{section with text}
Section text
\subsection{subsection}
\lipsum[2]
\section{section with no text}
\subsection{subsection}
\lipsum[2]
\end{document}
下图显示了我的意思。我试图让“2.1 子节”从与“节文本”相同的相对位置开始。(在这个特定的文档中,这没有意义,但我的特定文档有更多的格式。)
答案1
这有效。
\subsection
只要记住在不是该部分的开头时在 a 前留一个空行,例如
\section{name}
text
\subsection{name}
当它是本节中的第一件事时则相反,例如
\section{name}
\subsection{name}
梅威瑟:
\documentclass[a4paper]{article}
\usepackage{titlesec}
\usepackage{lipsum}
\newcounter{mycounter}
\let\oldpar\par
\def\par{%
\oldpar%
\stepcounter{mycounter}%
}
\newcommand\subsecskip{%
\ifnum\value{mycounter}<2
\unskip%
\vspace{-\baselineskip}%
\fi
}
\titleformat{\section}[leftmargin]
{}
{}
{0em}
{\setcounter{mycounter}{0}}
\titlespacing*{\section}
{0cm}{1cm}{2cm}
\titleformat{\subsection}[hang]
{\subsecskip\normalfont\large\bfseries}
{\thesubsection}
{1em}
{}
\begin{document}
\section{section with text}
some text
\subsection{subsection}
\lipsum[2]
\section{section with no text}
\subsection{subsection}
\lipsum[2]
\end{document}
输出: