パラグラフの前後の空白

パラグラフの前後の空白

- A. Y. の投稿
返信数: 5
はじめまして.

パラグラフの前と後ろの空白を消したいのですが, どうすればよいでしょうか. \parindent を 0ptにしてあっても, 空白ができます.

やりたいこと:
minipage の中に情報を入れ, いくつかの minipageを整列して表示させたいです. minipae を tabular, center, flushright, flushleft 環境で整列することは可能ですが, できれば minpage のみを次々と記述するだけで, 配列できるようにしたいです. 行の初めに配置するminipaeはテキストの領域の左端(下の例の(4)のように) に, 行の最後に配置する minipageは右端に(6)配置したいです. また, 行に1つだけ minipageを配置する場合(10)は, 中心に配置したいです.

試みたこと:
次のようなマクロを作成してみましたが, パラグラフの初め(1)と最後(9)に空白が入ります. 1種類のmyboxのみを定義するだけで, この空白が入らないようにできませんでしょうか. minipageの前後のhspace を fill を fil, fill, filll としたり, unskip, ignorespacesを入れてみたりしましたが, 1つのmyboxのみでは, 実現できませんでした.

ご助言をいただけるとたすかります.

\documentclass{article}

\newcommand{\mybox}[1]{%
\hspace{0pt plus 1 fill}%前
\fbox{\begin{minipage}{35mm}#1\end{minipage}}%
\hspace{0pt plus 1 fill}%後
}

\setlength{\parindent}{0pt}

\begin{document}

\mybox{1. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}
\mybox{2. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}
\mybox{3. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}
\mybox{4. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}
\mybox{5. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}
\mybox{6. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}
\mybox{7. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}
\mybox{8. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}
\mybox{9. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}

\mybox{10. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}

\end{document}

A. Y. への返信

Re: パラグラフの前後の空白

- tat tsan の投稿
これで如何ですか?
\newcommand{\mybox}[1]{%
\hspace*{0pt plus 1 fill}%前
\fbox{\begin{minipage}{35mm}#1\end{minipage}}%
\hspace{0pt plus 1 fill}\mbox{}%後
}

(1)「前」には \hspace*{} を用いる。
(2)「後」には \mbox{} をつける。(\null でもよい) informenter-marker-1.png
tat tsan への返信

Re: パラグラフの前後の空白

- tat tsan の投稿
あ、すみません。仕様を勘違いしていました。
縦に揃えば良い、ってわけではないのですね。
複数あるときは両端に押し付けるんですね。
tat tsan への返信

Re: パラグラフの前後の空白

- tat tsan の投稿
これが仕様に近いでしょうか。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\mybox}[1]{%
  \ifvmode\relax\else\hspace{0pt plus 1 fill}\fi %前
  \fbox{\begin{minipage}{35mm}#1\end{minipage}}%
}
\parindent=0pt
\leftskip=0pt plus 0.5fil
\rightskip=0pt plus -0.5fil
\parfillskip=0pt plus 1fil
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
tat tsan への返信

Re: パラグラフの前後の空白

- A. Y. の投稿
tat tsan 様

ありがとうございました。
ご提示いただいた案で、期待通りの動作になりました。
\ifvmodeでパラグラフ先頭を検出したり、\parfillskipがパラグラフの最後に入っていることを知り、非常に参考になりました。

ただ、\leftskip, \rightskipで0.5fil分だけ補正するところがあまり好きではないのでもう少し勉強してみたいと思います。
A. Y. への返信

Re: パラグラフの前後の空白

- しっぽ 愛好家 の投稿
次のサンプルのようなことをお考えですか?
\documentclass{article}
\newcommand{\mybox}[1]{%
\ifhmode
  \unskip
  \hspace{0pt plus 1 fill}%
\else
  \noindent
\fi
\null\nobreak \hspace{0pt plus 1 fil}%
\fbox{\begin{minipage}{35mm}#1\end{minipage}}%
\ignorespaces}
%%% \parfillskip の値はデフォルト値(0pt plus 1 fil)であるものと仮定

\begin{document}

\mybox{1. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}
\mybox{2. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}
\mybox{3. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}
\mybox{4. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}
\mybox{5. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}
\mybox{6. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}
\mybox{7. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}
\mybox{8. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}
\mybox{9. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}

\mybox{10. Aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm.}
\end{document}