带横线的章节和带 \dotfill 的子章节标题

带横线的章节和带 \dotfill 的子章节标题

我正在使用该类memoir,并希望从moderncv“银行”样式重新创建章节和小节标题:

moderncvstylefinance

我能够使用以下命令在节标题下创建规则:

\newcommand{\ruledsec}[1]{%
\Large\bfseries\raggedright\strut #1%
\hrule%
}
\setsecheadstyle{\ruledsec}
\setaftersecskip{.5\onelineskip}

但是,以下小节样式将分成\dotfill新行:

\newcommand{\dottedsubsec}[1]{%
\large\bfseries\raggedright\strut #1%
\scriptsize\dotfill%
}
\setsubsecheadstyle{\dottedsubsec}
\setaftersubsecskip{.25\onelineskip}

我怎样才能达到预期的效果?有没有更简单的方法来设置标题样式?

答案1

两种解决方案。

一种方法是将 afterskip 设为负数,这样点就会插入到标题文本中。然后,afterskip 维度指定水平跳过,您应将其设置为。然后需要在;0pt之后添加垂直间距,不幸的是,它会被丢弃,因此您需要使用\dotsfill\vspace\vspace*\\[...]

\newcommand{\dottedsubsec}[1]{%
    \large\bfseries\strut #1%
    \dotfill\\[0.25\onelineskip]
    }

或者,可能更好的是,将标题和点放在一个框中:

\newcommand{\dottedsubsec}[1]{%
\noindent\parbox{\textwidth}{\large\bfseries\strut #1%
\dotfill}\vspace{0.25\onelineskip}%
}

示例输出

\documentclass{memoir}

\newcommand{\ruledsec}[1]{%
\Large\bfseries\raggedright\strut #1%
\hrule%
}
\setsecheadstyle{\ruledsec}
\setaftersecskip{.5\onelineskip}

\newcommand{\dottedsubsec}[1]{%
\noindent\parbox{\textwidth}{\large\bfseries\strut #1%
\dotfill}\vspace{0.25\onelineskip}%
}
\setsubsecheadstyle{\dottedsubsec}
\setaftersubsecskip{-0pt}

\begin{document}

\section*{Experience}
\subsection*{Vocational}
Text.

\end{document}

第二种方法,对于您的情况,在跟踪列表方面表现更好,如下所示。虽然将后跳过设为负数可以解决运行问题,但它会调用完全不同的代码分支。保持后跳过为正数,可以通过在代码中\@startsection终止命令来绕过相应的编码,从而防止标题后出现换行符;下面的代码在组中执行此操作以局部化效果:\@@par\@startsection

\makeatletter
\newcommand{\dottedsubsec}[1]{%
{\noindent\let\@@par\relax\large\bfseries\strut #1%
\dotfill}
}
\makeatother

第二个示例

\documentclass{memoir}

\newcommand{\ruledsec}[1]{%
\Large\bfseries\raggedright\strut #1%
\hrule%
}
\setsecheadstyle{\ruledsec}
\setaftersecskip{.5\onelineskip}

\makeatletter
\newcommand{\dottedsubsec}[1]{%
{\noindent\let\@@par\relax\large\bfseries\strut #1%
\dotfill}
}
\makeatother
\setsubsecheadstyle{\dottedsubsec}
\setaftersubsecskip{0.25\onelineskip}

\begin{document}

\showoutput

\section*{Experience}
Text.
\subsection*{Vocational}
Text.


\section*{Experience}
\begin{description}
\item[Test] test
\end{description}

\subsection*{Vocational}
\begin{description}
\item[Test] test
\end{description}

\end{document}

相关内容