テキストの開始位置は、フォント サイズに応じて、マルチコル環境では大きく異なります。大きいフォント サイズを選択すると、テキストは上部に接しますが、小さいフォント サイズを選択すると、テキストは非常に低い位置に配置されます。これは非常に不均衡に見えます。どうすれば修正できますか?
\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
フォント サイズを変更すると、かなり不均一に見えます。
また、改ページは非同期操作であるため、\topskip
TeX が改ページを早めたり遅らせたりすると、テキスト内のフォント サイズ コマンドによる変更が間違った場所で行われる可能性があります。
したがって、ユースケースに対応する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}