代码之家  ›  专栏  ›  技术社区  ›  Brian M. Hunt

标题\无前导填充的乳胶框架环境开始处的小节

  •  1
  • Brian M. Hunt  · 技术社区  · 15 年前

    我有一个 framed 环境 memoir 使用如下内容初始化:

    \begin{framed}
    \subsection{Article 1}
    Content of Article 1
    \subsection{Article 2}
    Content: Article 2
    \end{framed}
    

    这将以以下方式呈现:

    ._________________.
    |                 |   <-- superfluous whitespace
    | Article 1       |
    | Content of Art- |
    | icle 1          |
    |                 |
    | Article 2       |
    | Content: Artic- |
    | le 2            |
    .-----------------.
    

    这个 \subsection{} 是在引入前面的空白,我不希望出现在里面 框架 环境,尽管我希望在常规文本(即框架环境之外)和第一个文本之后的子部分中有这样的空白。

    当在框架环境中时,我希望具有以下基本格式:

    ._________________.
    | Article 1       |
    | Content of Art- |
    | icle 1          |
    |                 |
    | Article 2       |
    | Content: Artic- |
    | le 2            |
    .-----------------.
    

    关于如何在开头对标题进行修改的任何想法或建议。 框架 环境会很好。


    编辑 基于 mkluwe 的注释,我已经在 memoir.cls :

     3314 \newcommand{\subsection}{%
     3315   \subsechook%
     3316   \@startsection{subsection}{2}%  level 2
     3317       {\subsecindent}%            heading indent
     3318       {\beforesubsecskip}%        skip before the heading
     3319       {\aftersubsecskip}%         skip after the heading
     3320       {\normalfont\subsecheadstyle}} % font
     3321 \newcommand{\subsechook}{}
     3322 \newcommand{\setsubsechook}[1]{\renewcommand{\subsechook}{#1}}
     3323 \newlength{\subsecindent}
     3324 \newcommand{\setsubsecindent}[1]{\setlength{\subsecindent}{#1}}
     3325   \setsubsecindent{\z@}
     3326 \newskip\beforesubsecskip
     3327 \newcommand{\setbeforesubsecskip}[1]{\setlength{\beforesubsecskip}{#1}}
     3328   \setbeforesubsecskip{-3.25ex \@plus -1ex \@minus -.2ex}
     3329 \newskip\aftersubsecskip
     3330 \newcommand{\setaftersubsecskip}[1]{\setlength{\aftersubsecskip}{#1}}
     3331   \setaftersubsecskip{1.5ex \@plus .2ex}
    

    因此,我上述问题的一个推论似乎是:怎样才能完善这个问题呢? subsection 命令,例如,如果它是环境中的第一个元素(例如 框架 环境)ITS \beforesubsecskip 很小吗?


    谢谢你的阅读。

    真诚地,

    布瑞恩

    3 回复  |  直到 15 年前
        1
  •  1
  •   Herbert Sitz    15 年前

    如果这种情况很少发生,您可以使用vspace命令作为每个帧中的第一个条目。您甚至可以创建一个新的框架环境来自动执行它。在任何情况下,您都需要调整vspace以去掉正确的填充量。如您所愿,下面的新环境将删除第一个子节条目的填充,而不是后续条目的填充:

    \newenvironment{subsectframe}{\begin{framed}\vspace{-1.0\baselineskip}}{\end{framed}}
    
    \begin{document}
    
    \begin{subsectframe}
    \subsection{Article 1}
    Content of Article 1
    \subsection{Article 2}
    Content: Article 2
    \end{subsectframe}
    
    \end{document}
    

    我确实理解问题是“与小节有关”。然而,我认为通过创建一个新的环境来修复它将比尝试更改子命令更干净,这样它就可以智能地避免根据所在位置添加空间。

        2
  •  1
  •   dmckee --- ex-moderator kitten    15 年前

    我不知道这种环境,但在文档中我发现:

    \框架高度调整:宏;框架高度高于基线 页

    你可以试着去做…

        3
  •  1
  •   mkluwe    15 年前

    作为一个快速而肮脏的解决方案,我复制了 \subsection 命令来自 article.cls 删除垂直跳过:

    \documentclass{article}
    \usepackage{framed}
    \makeatletter
    \newcommand\subsectionx{\@startsection{subsection}{2}{\z@}%
                                         {0ex}%
                                         {1.5ex \@plus .2ex}%
                                         {\normalfont\large\bfseries}}
    \makeatother
    \begin{document}
    \begin{framed}
    \subsectionx{Article 1}
    Content of Article 1
    \subsection{Article 2}
    Content: Article 2
    \end{framed}
    \end{document}
    
    推荐文章