怎样才能将小节标题放在单独的列中,同时保持文档结构和字体控制?

怎样才能将小节标题放在单独的列中,同时保持文档结构和字体控制?

我正在尝试排版一份文档(简历),以便子部分标题(仅限这些标题)位于左侧的单独列中。我还希望能够控制内容和标题的字体(我通常使用fontspecsectstyXeTeX 来实现这一点),并保持“通常”的文档结构,以便 pandoc 仍可以解析它。

parcolumns包被淘汰,因为它对文档结构影响太大(这是公平的,它不是为此用途而设计的)。

我已经尝试过中等长度毕业生简历模板,但部分标题在许多地方都是硬编码的,并且与软件包不兼容sectsty,因此很难更改标题字体。(我还没有放弃,但它已经够难了,我感觉我选错了方向。)

下面是一张我大致想要达到的目标的图片:不同列中的子部分标题示例

实现这一目标的直接方法是什么?

答案1

据我了解,你想要这样的东西:

\documentclass[a4paper]{article}

\usepackage{lipsum}

% Dimensions

\textwidth=13cm
\oddsidemargin=4cm
\evensidemargin=\oddsidemargin
\topmargin=-1cm
\textheight=25cm

\makeatletter

\def\section#1{\vspace{1cm plus 5mm minus 3mm}\goodbreak\par\noindent%
    \hspace{-4cm}\parbox{17cm}{\Large\bf #1}%
    \addcontentsline{toc}{section}{#1}\@xsect{0.5\baselineskip}}

\def\subsection#1{\vspace{3pt plus 1pt minus 1pt}\par\noindent%
    \hspace{-4cm}\vbox to 0pt{\smash{\parbox[t][][b]{3.7cm}{%
    \large\noindent\raggedleft #1%
    \addcontentsline{entoc}{subsection}{#1}}}}%
    \@xsect{0.1\baselineskip}%
    \vspace{-1.5\baselineskip}}% This requires tweaking to vertically align the text corrrectly

\makeatother

\begin{document}
\section{First section}
\subsection{First subsection}
\lipsum[1]
\subsection{Second subsection with a lot of text}
\lipsum[2]
\section{Second section}
\subsection{First subsection}
\lipsum[1]
\subsection{Second subsection with a lot of text}
\lipsum[2]
\end{document}

编译结果

为了将标题与全文宽度对齐,该calc包很有用:

\usepackage{calc}

然后在尺寸块之后添加:

\newlength{\fullwidth}
\setlength{\fullwidth}{\textwidth+\oddsidemargin}

...并在\makeatletter块内执行:

\def\maketitle{%
    \noindent\hspace{-\oddsidemargin}%
    \begin{minipage}{\fullwidth}%
        \begin{center}%
            {\LARGE\@title}%
        \end{center}%
    \end{minipage}}

fontspec命令需要插入到(子)部分命令定义本身中(即不要使用titlesecsectsty命令):

\usepackage{fontspec}

\newfontfamily\subsectionfont{Some Font}

[...]

\def\subsection#1{\vspace{3pt plus 1pt minus 1pt}\par\noindent%
    \hspace{-4cm}\vbox to 0pt{\smash{\parbox[t][][b]{3.7cm}{%
    \large\noindent\raggedleft\subsectionfont #1%

最后,如果您使用hyperref获取 PDF 索引,则需要添加\phantomsection命令以避免页码错误:

    \large\noindent\raggedleft #1%
    \phantomsection%

相关内容