页边的章节和与章节在同一行的小节

页边的章节和与章节在同一行的小节

我想编写一份文档,以便\section材料显示在页边距中,并且\subsection材料显示在与页边距相同的行上(当然,假设和命令\section之间没有任何其他内容)。\section\subsection

粗略地说,我想要类似这样的东西:

期望输出

以下代码(\vspace取消注释命令)产生上述输出。

但是,这种实现方式看起来有点不合理,因为你必须在\vpsace每个命令\subsection后面(不是第一个\section命令)以及每个在 a 中\subsection是第一个但前面有其他内容的命令后面放置任意的 。\subsection\section

有什么更好、更强大的方法来做到这一点?

\documentclass{article}

\usepackage{parskip}
\usepackage{enumitem}
\setlist{nosep}

\usepackage{titlesec}

\titleformat{\section}[leftmargin]
  {\Large\scshape\raggedright}
  {\thesection}
  {1em}
  {}

\titlespacing{\section}
  {7pc}
  {1ex plus .1ex minus .2ex}
  {0pc}

\titleformat{\subsection}
  {\large\scshape\raggedright}
  {\thesubsection}
  {1em}
  {}

\titlespacing{\subsection}
  {0pt}
  {-1.6\baselineskip}
  {0pt}

\begin{document}

\section*{asdf}

\subsection*{qwerty}

\begin{itemize}
  \item{poiu}
\end{itemize}

%\vspace{1.6\baselineskip}
\subsection*{zxcv}

\begin{itemize}
  \item{lkjh}
\end{itemize}

\section*{mnbv}

lorem ipsum

%\vspace{1.6\baselineskip}
\subsection*{zqpm}

\end{document}

答案1

这里有一个稍微不那么坑爹的方法。我创建了一个条件语句,etoolbox如果子节紧跟在某个节后面,则使用这个条件语句将子节与节对齐,否则不对齐。

这里唯一真正的窍门是,如果你有一个部分不是紧接着一个小节,您需要\nosubsection在其后明确添加一个命令。

由于您没有对节或小节进行编号,因此我仅将其设置secnumdepth为 0,而不是使用\section*等,因为这些没有必要。

\documentclass{article}

\usepackage{parskip}
\usepackage{enumitem}
\usepackage{etoolbox}
\setlist{nosep}
\newbool{subsection}
\newcommand*{\nosubsection}{\global\boolfalse{subsection}}
\usepackage{titlesec}
\setcounter{secnumdepth}{0}

\titleformat{\section}[leftmargin]
  {\Large\scshape\raggedright}
  {\thesection}
  {1em}
  {\global\booltrue{subsection}}

\titlespacing{\section}
  {1in}
  {1ex plus .1ex minus .2ex}
  {1em}

\titleformat{\subsection}
  {\ifbool{subsection}{\vspace{-1.6\baselineskip}\nosubsection}{}\large\scshape\raggedright}
  {\thesubsection}
  {1em}
  {}

\titlespacing{\subsection}
  {0pt}
  {0pt}
  {0pt}


\begin{document}

\section{Section}
\subsection{Subsection}
\begin{itemize}
  \item{item}
\end{itemize}

\subsection{Subsection}

Some text

\begin{itemize}
  \item{item}
\end{itemize}

\section{Section}
\nosubsection
lorem ipsum

\subsection{Subsection}

\end{document}

代码输出

相关内容