我正在尝试排版一份文档(简历),以便子部分标题(仅限这些标题)位于左侧的单独列中。我还希望能够控制内容和标题的字体(我通常使用fontspec
和sectsty
XeTeX 来实现这一点),并保持“通常”的文档结构,以便 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
命令需要插入到(子)部分命令定义本身中(即不要使用titlesec
或sectsty
命令):
\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%