1

我有一个班级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{}是在其自身之前引入空白,我不希望在这个framed环境中出现,尽管我确实希望在常规文本(即在框架环境之外)和第一个之后的小节中使用这样的空白。

当在框架环境中时,我希望有这样的格式:

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

任何关于如何在环境开始时对标题进行修改的想法或建议framed将不胜感激。


编辑:基于mkluwe的评论,我已经根除 \subsection 命令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命令,例如,如果它是环境(例如framed环境)中的第一个元素,它\beforesubsecskip非常小?


感谢您的阅读。

真挚地,

布赖恩

4

3 回答 3

1

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

\FrameHeightAdjust:宏;页面顶部基线以上框架的高度

你可以试试偷懒...

于 2010-07-07T03:29:42.470 回答
1

作为一个快速而肮脏的解决方案,我从中复制了\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}
于 2010-07-07T08:55:42.640 回答
1

如果它很少发生,您可以使用 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}

我确实明白问题出在“小节”上。但是,我认为通过创建新环境来修复它比尝试更改 subsection 命令更清洁,因此它可以智能地避免根据位置添加空间。

于 2010-07-07T15:41:54.687 回答