複数段組環境内でテキストの開始位置を制御するにはどうすればよいですか?

複数段組環境内でテキストの開始位置を制御するにはどうすればよいですか?

テキストの開始位置は、フォント サイズに応じて、マルチコル環境では大きく異なります。大きいフォント サイズを選択すると、テキストは上部に接しますが、小さいフォント サイズを選択すると、テキストは非常に低い位置に配置されます。これは非常に不均衡に見えます。どうすれば修正できますか?

\documentclass[12pt]{article}
\usepackage{multicol}

\setlength{\columnseprule}{0.4pt}

\newcommand{\m}{\begin{multicols}{2}
  \noindent
  this is a test\\
  this is a test\\
  this is a test\\
  this is a test
\end{multicols}}

\begin{document}
  \Huge\m
  \normalsize\m
  \tiny\m
\end{document}

醜いマルチコル

答え1

ここで記述されているユースケースは、multicol単一の列ではなく複数の列が生成される点を除いて、通常のページ作成を模倣することです。つまり、各列の上部が環境\topskipの最初の行を配置するために使用されますmulticols

\topskipは、通常はドキュメント全体で変更されないレジスタです (ドキュメント内のいくつかの場所でフォント サイズが変更されている場合でも)。これは、ページの最初の行が「通常」同じ位置にあるようにするためです。 の値は、\topskip通常、クラスによって定義されます。つまり、 を12ptクラスのオプションとして指定すると、デフォルトのフォント サイズは 12 ポイントになり、\topskipも 12 ポイントになります (一方、 は\baselineskipのようになります14.4pt)。

あなたのユースケースでは、これは少し奇妙に見えるかもしれませんが、前述したように、パッケージは環境全体のフォント サイズが異なるこのユースケース向けに作成されたものではありません。たとえば、最初の列の最初の行に小さなフォントがあり、2 番目の列に通常のフォントがある場合、このmulticolアプローチでは正しく表示されますが、\topskipフォント サイズを変更すると、かなり不均一に見えます。

また、改ページは非同期操作であるため、\topskipTeX が改ページを早めたり遅らせたりすると、テキスト内のフォント サイズ コマンドによる変更が間違った場所で行われる可能性があります。

したがって、ユースケースに対応する1つの方法は、アクティブな\topskip時間を変更することですmulticols。環境内でこれを行うと、環境が変更されると古いトップスキップ値が復元されます。例:

\documentclass[12pt]{article}
\usepackage{multicol}

\setlength{\columnseprule}{0.4pt}

\newcommand{\m}[1]{\begin{multicols}{2}
  #1\setlength\topskip{.7\baselineskip}%              set font and \topskip
  \noindent
  this is a test\\
  this is a test\\
  this is a test\\
  this is a test
\end{multicols}}

\begin{document}
  \m{\Huge}
  \m{\normalsize}
  \m{\tiny}
\end{document}

これで、フォントとトップスキップ値は env body でのみ変更され、次の出力が得られます。

ここに画像の説明を入力してください

もちろん、70% にする代わりに、\baselineskip明示的な値または異なる割合を指定することもできます。60% 未満の場合、文字がすでにその量を占めているため、何も起こりません。

答え2

\topskip がどこから来たのかはわかりませんが、フォント サイズに関係なく、デフォルトは 12pt です。.6\baselineskip 未満の値は効果がないようです。値が大きいほど、上部が上に移動します。

\documentclass[12pt]{article}
\usepackage{multicol}

\setlength{\columnseprule}{.4pt}%

\newcommand{\m}{\topskip=.6\baselineskip
\begin{multicols}{2}
  \noindent
  this is a test\\
  this is a test\\
  this is a test\\
  this is a test
\end{multicols}}

\begin{document}

\noindent
  \Huge\m
  \normalsize\m
  \tiny\m
\end{document}

トップスキップ

関連情報