Заголовок \ подраздел при запуске рамочной среды в LaTeX без начального заполнения - PullRequest
1 голос
/ 07 июля 2010

У меня есть 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            |
.-----------------.

The \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 очень мало?


Спасибо за чтение.

С уважением,

Брайан

Ответы [ 3 ]

1 голос
/ 07 июля 2010

В качестве быстрого и грязного решения я скопировал определение команды \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}
1 голос
/ 07 июля 2010

Если это случается достаточно редко, вы можете просто использовать команду 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}

Я понимаю, что проблема в «подразделе». Однако я думаю, что исправить это путем создания новой среды будет более чистым решением, чем пытаться изменить команду подраздела, чтобы разумно избежать добавления пространства в зависимости от того, где он находится.

1 голос
/ 07 июля 2010

Я не знаю эту среду, но в документации я нахожу:

\ FrameHeightAdjust: macro;высота рамки над базовой линией в верхней части страницы

Вы можете попробовать обойти это ...

...