memoir.cls:长度的挣扎

memoir.cls:长度的挣扎

亲爱的专家(彼得?):

我仍然在为回忆录的长度而苦恼。我决定我需要了解这里的基本会计恒等式。所以我写了一个简单的表格显示助手 --- 不是很优雅但可行:


%% should require memoir

\usepackage{calc}
\usepackage{lengthconvert}

\newcommand{\topt}[1]{\Convert[unit=pt,precision=1]{#1}}
\newcommand{\tomm}[1]{\Convert[unit=mm,precision=2]{#1}}
\newcommand{\toin}[1]{\Convert[unit=in,precision=3]{#1}}

%% below is very inelegant.  this should instead have a definition like
% \newcommand{\allfour}[3][]{#1 & \topt{#2} & \tomm{#2} & \toin{#2} & #3}

%% should also have a column for what is set for and what is calculated by memoir

\newcommand{\tablemylengths}{
  \newlength{\fullwidth}
  \setlength{\fullwidth}{\trimedge+\marginparwidth+\marginparsep+\textwidth+\spinemargin}

  \section{Horizontal Widths (Verso)}

  \begin{tabular}{l l l l >{\footnotesize}l}
    \toprule
    paperwidth     & \topt\paperwidth     & \tomm\paperwidth     & \toin\paperwidth                                             \\
    pagewidth      & \topt\pagewidth      & \tomm\pagewidth      & \toin\pagewidth                                              \\
    stockwidth     & \topt\stockwidth     & \tomm\stockwidth     & \toin\stockwidth                                             \\
    \addlinespace
    trimedge       & \topt\trimedge       & \tomm\trimedge       & \toin\trimedge       & from stock to paper                   \\
    marginparsep   & \topt\marginparsep   & \tomm\marginparsep   & \toin\marginparsep   & between bodytext and marginnote       \\
    marginparwidth & \topt\marginparwidth & \tomm\marginparwidth & \toin\marginparwidth & marginnote                            \\

    \addlinespace
    spinemargin    & \topt\spinemargin    & \tomm\spinemargin    & \toin\spinemargin    & from paper to text (body)             \\
    oddsidemargin  & \topt\oddsidemargin  & \tomm\oddsidemargin  & \toin\oddsidemargin  & not used in memoir, but set?          \\
    evensidemargin & \topt\evensidemargin & \tomm\evensidemargin & \toin\evensidemargin & not used in memoir, but set?          \\
    \addlinespace
    foremargin     & \topt\foremargin     & \tomm\foremargin     & \toin\foremargin     & unknown                               \\
    columnsep      & \topt\columnsep      & \tomm\columnsep      & \toin\columnsep      & unknown                               \\
    columnseprule  & \topt\columnseprule  & \tomm\columnseprule  & \toin\columnseprule  & unknown                               \\

    \midrule
    \multicolumn5r{trimedge + marginparwidth + marginparsep + textwidth + spinemargin}                                          \\
    fullwidth      & \topt\fullwidth      & \tomm{\fullwidth}    & \toin{\fullwidth}    & missing: to paperwidth to stockheight \\
    \bottomrule
  \end{tabular}


  \section{Vertical Heights}

  \newlength{\fullheight}
  \setlength{\fullheight}{\trimtop+\uppermargin+\textheight+\footskip}

  \begin{tabular}{l l l l >{\footnotesize}l}
    \toprule
    paperheight   & \topt\paperheight   & \tomm\paperheight   & \toin\paperheight                                                   \\
    pageheight    & \topt\pageheight    & \tomm\pageheight    & \toin\pageheight                                                    \\
    stockheight   & \topt\stockheight   & \tomm\stockheight   & \toin\stockheight                                                   \\
    \addlinespace
    trimtop       & \topt\trimtop       & \tomm\trimtop       & \toin\trimtop       & from stock to paper                           \\
    uppermargin   & \topt\uppermargin   & \tomm\uppermargin   & \toin\uppermargin   & overlaps with headheight/headsep              \\
    topskip       & \topt\topskip       & \tomm\topskip       & \toin\topskip       & not sure how used in memoir                   \\
    topmargin     & \topt\topmargin     & \tomm\topmargin     & \toin\topmargin     & not used in memoir?                           \\
%    headmargin    &\topt\headmargin      & \tomm\headmargin     & \toin\headmargin     & unknown                                       \\
    headheight    & \topt\headheight    & \tomm\headheight    & \toin\headheight    & header height itself                          \\
    headsep       & \topt\headsep       & \tomm\headsep       & \toin\headsep       & from header to bodytext (page\#?)             \\
    \addlinespace
    footskip      & \topt\footskip      & \tomm\footskip      & \toin\footskip      & text to footer (page number?)                 \\
    \addlinespace
    marginparpush & \topt\marginparpush & \tomm\marginparpush & \toin\marginparpush & between consecutive margin notes              \\
    \midrule
    \multicolumn5r{trimtop + uppermargin + textheight + footskip}                                                                   \\
    fullheight    & \topt\fullheight    & \tomm{\fullheight}  & \toin{\fullheight}  & missing: footer to paperheight to stockheight \\
    \bottomrule
  \end{tabular}
}

并且(根据 Peter 的建议)主要文件如下:

\documentclass[12pt]{memoir}

\usepackage{tablemylengths}

\begin{document}

\tablemylengths

\medskip

See Section~2 of memoir docs.  What is set, what is calculated?

\end{document}

在普通回忆录中引用这个

乳胶宽度和高度

我的第一个问题是,我省略了什么来使我的宽度和高度加到页面的宽度和高度。

我的第二个问题是回忆录希望用户设置什么以及它根据用户值计算出什么。

一旦我理解了这些,我希望能够更好地处理这个问题。(彼得 --- 如果回忆录文档表 2.9 也打印了默认设置,那就更好了……或者如果你有类似我在这里尝试构建的东西。哦,谢谢你为我们制作了这么棒的课程。没有它,我就写不出我的教科书了。)

/iaw

答案1

memoir.cls请查看(在我的计算机上)的代码/usr/local/texlive/2021/texmf-dist/tex/latex/memoir/memoir.cls),查看类 papersize 选项设置的长度以及可以通过用户宏更改的长度。默认值与 LaTeX 类相同book

** 开始编辑我尝试提供设置,以便为 33 个类papersize选项中的每一个提供合理的布局。** 结束编辑

查看手册中的图 2.2 和 2.3,没有关于\fullheight页脚下方空间的固定说明 --- 这取决于之前的情况,因此它是一个灵活空间。您的定义\fullheight不正确(它缺少页脚后未定义的空间(这是\paperheight - (\trimtop + \uppermargin +\textheight + \footskip)

关于表 2.9,默认设置取决于类 papersize 选项,其中有 33 个。我认为打印设置的 33 个可能值是没有意义的。

不过,我非常欣赏您提供的用于转换为 pts、mm 和英寸的宏。该代码在包中很有用。

相关内容