다중 열 환경 내에서 시작 텍스트 위치를 어떻게 제어합니까?

다중 열 환경 내에서 시작 텍스트 위치를 어떻게 제어합니까?

텍스트 시작 위치는 글꼴 크기에 따라 다중 콜 환경에서 크게 달라집니다. 큰 글꼴 크기를 선택하면 텍스트가 맨 위에 닿습니다. 하지만 작은 글꼴 크기를 선택하면 텍스트가 매우 낮게 표시됩니다. 이것은 매우 일방적으로 보입니다. 어떻게 해결하나요?

\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포인트가 되고 는 와 같이 \topskip12포인트가 됩니다 .\baselineskip14.4pt

귀하의 사용 사례에서는 이것이 조금 이상하게 보일 수 있지만 제가 말했듯이 패키지는 환경 전체가 다른 글꼴 크기로 되어 있는 이 사용 사례에 맞게 작성되지 않았습니다. 첫 번째 열의 첫 번째 줄은 두 번째 열의 일반 글꼴을 사용하면 multicol올바르게 표시되지만 \topskip글꼴 크기를 변경하면 다소 고르지 않게 보입니다.

또한 페이지 나누기는 비동기 작업이므로 \topskipTeX가 더 일찍 또는 나중에 나누기로 결정함에 따라 텍스트 내의 글꼴 크기 명령에 의한 변경이 잘못된 위치에서 발생할 수 있습니다.

따라서 사용 사례에 맞는 한 가지 방법은 활성 \topskip시간에 따라 변경하는 것입니다 multicols. 환경이 변경되면 이전 topskip 값이 복원되도록 환경 내부에서 이를 수행할 수 있습니다. 예:

\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}

이제 글꼴과 topskip 값은 env 본문 중에만 변경되며 다음과 같은 출력을 얻게 됩니다.

여기에 이미지 설명을 입력하세요

물론 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}

톱스킵

관련 정보