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

迅速で汚い解決策として、\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}

問題は「サブセクション」であることは理解しています。ただし、新しい環境を作成して修正することは、サブセクションコマンドを変更するよりもクリーンなソリューションになると思うので、場所に応じてスペースを追加することをインテリジェントに回避します。

于 2010-07-07T15:41:54.687 に答える
1

この環境はわかりませんが、ドキュメントには次のように記載されています。

\FrameHeightAdjust: マクロ; ページ上部のベースライン上のフレームの高さ

あなたはそれをいじってみるかもしれません...

于 2010-07-07T03:29:42.470 に答える