我正在使用“回忆录”作为论文,并且我已选择将章节标题和下一节之间的垂直间距精确固定,每个新章节的 \afterchapskip 为 120pt。我现在想要做的是创建一个题词环境,这样,对于每个章节,引文都放在这个垂直(固定)区域内。
编辑:这是我的意思的草图,可能会让事情更清楚
这个想法是,无论引文的大小如何,都保持标题和第一部分之间的垂直空间为 120pt(它们保持较短)。
我该如何实现这一点?我尝试先使用 120pt 的 minipage 环境“保存”垂直空间,然后将引文放入其中。然而,我遇到的问题是,实际的 minipage 位置与正文一起被 LaTeX 移动,因此最终什么都没有固定。
以下方法不起作用,但供您参考,我尝试过这样的方法:
%ifemptyarg[
\makeatletter
\def\ifemptyarg#1{%
\if\relax\detokenize{#1}\relax % H. Oberdiek
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi}
\makeatother
%%source: http://tex.stackexchange.com/questions/308/different-command-definitions-with-and-without-optional-argument
%ifemptyarg]
\newcommand{\chaptercustom}[4]{
\ifemptyarg{#2}
{
%if no quote is provided, just go for the usual chapter:
\chapter{#1}
}
{
%otherwise:
\renewcommand*{\afterchaptertitle}{} %remove the space normally following the chapter title
\chapter{#1} %display title
\begin{flushright}
\noindent\begin{minipage}[b][\afterchapskip]{0.5\linewidth}
\flushright \normalsize\normalfont
#2\\
\textsc{#3}\hspace{1pt}---\hspace{1pt}#4%
\end{minipage}
\end{flushright}
\renewcommand*{\afterchaptertitle}{
\vspace{\afterchapskip} % recover the usual structure for fore-coming chapters
}
}
}
在主文档中通过以下方式调用:
\chaptercustom{<CHAPTERTITLE>}{<QUOTE>}{<AUTHOR>}{<SOURCE>}
如果需要的话,这里是我写的章节样式:
\newcommand{\afterchapskipcustomvalue}{120pt}
\makechapterstyle{myChapStyle}{
\renewcommand{\chapterheadstart}{}
\setlength{\midchapskip}{7pt}
\setlength{\afterchapskip}{\afterchapskipcustomvalue}
\renewcommand*{\chapnamefont}{\Large\scshape\MakeLowercase}
\renewcommand*{\chapnumfont}{\normalsize}
\renewcommand*{\afterchapternum}{
\vspace{\midchapskip}
\hrule
}
\renewcommand*{\chaptitlefont}{
\LARGE
\bfseries
}
\renewcommand*{\printchaptertitle}[1]{
\vspace{\onelineskip}
\chaptitlefont ##1
}
\renewcommand*{\printchapternonum}{
\vphantom{\printchaptername}
\afterchapternum
}
\renewcommand*{\afterchaptertitle}{
\vspace{\afterchapskip}
}
}
非常感谢您付出的时间和提出建议!
答案1
也许你可以使用\epigraphpicture
。下面的方法效果不佳,但你明白了。
\documentclass{memoir}
\makechapterstyle{standard}{%
\setlength{\afterchapskip}{120pt}
\renewcommand{\afterchaptertitle}{\par \raggedleft\epigraphpicture\par\nobreak\vskip \afterchapskip}
}
\chapterstyle{standard}
\newcommand{\epi}[2]{\epigraphforheader{\epigraph{#1}{#2}}}
\usepackage{lipsum}
\begin{document}
\epi{A short quote.}{Prof. Dr. Awesome}
\chapter{First Chapter}
\lipsum[1]
\epi{In the beginning was the Word, and the Word was with God, and the Word was God.}{John}
\chapter{Second Chapter}
\lipsum[1]
\end{document}
答案2
有点晚了...但我遇到了几乎完全相同的问题,只是我希望整个章节的样式正好占 16 行,和在页边空白处标注相对于标题的章节编号。
我的解决方案是定义空间,tikz
然后使用 在该空间内书写和绘制任何我喜欢的内容tikz
。要定位数字,我必须使用execute at end picture
才能访问命名节点title
。这是我的解决方案:
\makechapterstyle{chapterstylefixed}{
\renewcommand*{\chapterheadstart}{}
\renewcommand*{\printchaptername}{}
\renewcommand*{\chapternamenum}{}
\renewcommand*{\afterchapternum}{}
\renewcommand*{\printchapternum}{
\begin{tikzpicture}[
execute at end picture={%
\begin{scope}[overlay]
\draw let \p1 = (title.base)
in node [anchor=base west,outer sep=0pt,inner sep=0pt]
at (\textwidth + \marginparsep, \y1)
{\chapternumberfont\thechapter};
\end{scope}
}
]
}
\renewcommand*{\printchapternonum}{
\begin{tikzpicture}
}
\renewcommand*{\printchaptertitle}[1]{
\pgfresetboundingbox
\useasboundingbox (0,0) rectangle (\textwidth, -\chapterskip);
%
\@chapterepigraph
%
\draw (0, -\titleskip) node(title) [anchor=south west,outer sep=0pt,inner sep=0pt]
{\raisebox{0pt}[\height][\titledepth]{\makebox[\textwidth][r]{\chaptertitlefont##1}}};
}
\renewcommand*{\afterchaptertitle}{
\end{tikzpicture}%
\par\nobreak\ignorespaces%
}
}
在此代码之前,我定义了、、、。然后\titledepth
用于排版题词。运行完美 :-)\titleskip
\chapterskip
\chapter*font
\@chapterepigraph
\node [] at (x,y)