如何一劳永逸地定义区域的大小(对于章节后的题词)?

如何一劳永逸地定义区域的大小(对于章节后的题词)?

我正在使用“回忆录”作为论文,并且我已选择将章节标题和下一节之间的垂直间距精确固定,每个新章节的 \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)

相关内容