한 줄에 66자를 적절하게 강제 적용

한 줄에 66자를 적절하게 강제 적용

나는 평균 또는 일반적인 수를 설정하기 위해 여백(또는 레이아웃)을 잘 다룰 수 있게 해주는 "무엇"(패키지, 트릭, 매크로 등)을 갖고 싶습니다. 한 줄에 문자.

이상적으로 이 "시스템"은 글꼴 크기(예: 패키지 사용 pslatex또는 txfonts예를 들어) 의 글꼴 모음 변경과 관계없이 이 비율(66, 2.5 알파벳 또는 내가 선택/입력하는 기타 숫자)을 유지하는 데 도움이 됩니다. (예를 들어 10pt또는 12pt클래스 옵션 사용)

나는 조금 둘러보았고 KOMA-Script 클래스나 memoir클래스를 사용하는 것이 해결책의 일부일 수 있다는 것을 어느 정도 이해했습니다. 나는 그렇지 않은 것을 선호합니다(특히 지금까지 사용한 적이 없기 때문에).

나에게 중요한 점은 원래 레이아웃의 전체 비율이나 원칙이 유지되어야 한다는 것입니다. 예를 들어 왼쪽과 오른쪽 여백 사이에 설정된 비율이 있는 경우 하나의 여백이나 텍스트 너비/선 너비를 가지고 노는 것만으로는 만족스럽지 않습니다.

내가 왜 이 일을 하고 싶은가? 나는 패키지를 사용하는 것을 좋아하기 때문에 pslatex라인당 평균 문자 수가 약 65개에서 약 75개 이상으로 늘어납니다.

참고로 저는 이미 다음 내용을 살펴보았거나 훑어봤습니다.

그리고 거기에 답이 있을 수도 있지만 (너무 쉽게) 찾을 수 없었습니다.

답변1

소문자 알파벳 길이의 약 2.5배라는 진술은 단지 표시일 뿐입니다. 그러나 다음과 같이 플레이할 수 있습니다 geometry.

\documentclass{book}

%%\usepackage{newtxtext}
\newlength{\alphabet}
\settowidth{\alphabet}{\normalfont abcdefghijklmnopqrstuvwxyz}

\usepackage{geometry}
\geometry{textwidth=2.5\alphabet,hmarginratio={2:3}}

\begin{document}
\the\textwidth
\end{document}

표시된 대로 여백 비율이 사용됩니다(양면 모드에서는 실제로 2:3이 기본값입니다). 제대로 동작하는 글꼴 패키지는 올바르게 작동해야 합니다.

기본 글꼴을 사용하면 318.96pt의 텍스트 너비를 얻고, newtxtext298.58pt를 얻습니다( mathptmx결과는 298.57pt).

이는 pslatex매우 쓸모없는 패키지이며 그 하위 패키지는 mathptmx수학과 관련된 심각한 조판에 적합하지 않습니다. 수학이 필요하지 않다면 (Linotype) Times Roman을 기반으로 한 다른 선택은

  • newtxtext(기준 txfonts이지만 측정항목이 수정됨)

  • tgtermes

전자에는 동반 수학 패키지가 있습니다 newtxmath.

여백에 대해 원하는 비율을 선택할 수 있습니다. 양면 인쇄에서는 바깥쪽 여백이 안쪽 여백보다 넓은 것이 일반적입니다. 단면 인쇄(여백 동일)와 양면 인쇄 간의 선택을 자동화하려면 다음을 수행하십시오.

\geometry{textwidth=2.5\alphabet}
\makeatletter
\if@twoside
  \geometry{hmarginratio={2:3}}
\else
  \geometry{hmarginratio={1:1}}
\fi
\makeatother

사용 될수있다. 에 대한 옵션은 geometry별도의 명령으로 제공될 수 있습니다 \geometry. 용지 크기를 지정하는 것을 잊지 마십시오(수업 내에서 또는 \geometry수업 옵션으로 수행할 수 있음).

로드된 클래스를 테스트할 수도 있습니다.

\makeatletter
\geometry{hmarginratio={1:1}} % fallback

\@ifclassloaded{book}
 {
  \if@twoside
    \geometry{hmarginratio={2:3}}
  \else
    \geometry{hmarginratio={1:1}}
  \fi
 }{}

\@ifclassloaded{article}
 {
  \if@twoside
    \geometry{hmarginratio={4:2}}
  \else
    \geometry{hmarginratio={1:1}}
  \fi
 }{}
\makeatletter

(4:2 설정은 단지 예시일 뿐입니다).

그러나 "모든 것을 포괄하는" 형식은 없습니다. 문서에 대해 최종적으로 선택하는 것은 문서 자체에 따라 다릅니다.


수평 여백 비율을 클래스에서 고정한 비율과 동일하게 설정하는 방법은 무엇입니까? 표준 설정은 geometry.

\documentclass{article}
\usepackage{newtxtext}
\usepackage{geometry}

\newlength{\alphabet}
\sbox0{\normalfont abcdefghijklmnopqrstuvwxyz}
\setlength{\alphabet}{\wd0}

\makeatletter
\begingroup
\dimendef\innermargin=\z@
\dimendef\outermargin=\tw@
\innermargin=\dimexpr\oddsidemargin+1in+\hoffset\relax
\outermargin=\dimexpr\paperwidth-\innermargin-\textwidth\relax
\outermargin=.002\outermargin
\innermargin=2\innermargin
\count@=\innermargin
\divide\count@ \outermargin
\xdef\standardhmarginratio{\number\count@:1000}
\endgroup

\geometry{textwidth=2.5\alphabet,hmarginratio=\standardhmarginratio}

\begin{document}

text width = \the\textwidth

horizontal margin ratio = \standardhmarginratio

\end{document}

클래스를 사용하면 article1000:1000을 얻습니다. book(양면 모드) 결과는 667:1000입니다. 즉, 모든 실제적인 목적에서는 2:3입니다.

답변2

로버트 브링허스트,"타이포그래피 스타일의 요소", 다양한 글꼴에 대해 선호하는 줄 길이 표를 제공합니다. 테이블 데이터의 최소 제곱 최적화 적합성은 다음 매크로를 사용하여 매우 잘 근사화될 수 있음을 보여주었습니다.

\newcommand*\GetTextWidth[3][\normalfont]{{#1%
    \settowidth{#2}{abcdefghijklmnopqrstuvwxyz}%
    \setlength{#2}{0.03193#2}%
    \addtolength{#2}{0.44961pt}%
    \setlength{#2}{#3#2}%
    \global#2=#2}}

등과 함께 사용하여 geometry텍스트 너비를 설정할 수 있습니다.

\newlength\bringhurstwdt
\GetTextWidth{\bringhurstwdt}{66}
\geometry{textwidth=\bringhurstwdt}

나는 이것이 상대적으로 짧은 단어를 가진 표준 영어에 유효하다고 가정합니다. 아프리칸스어(내 모국어)와 같은 언어에는 매우 긴 단어가 많고 한 줄에 66자가 항상 적합해 보이지는 않습니다. 다른 언어의 경우 좋은 타이포그래피를 위한 문자 수가 다를 수 있지만 무엇이 가장 좋을지는 모르겠습니다.

답변3

\averagecharwidthConTeXt는 언어별 문자 빈도를 기반으로 문자의 평균 너비를 계산하는 매크로를 제공합니다 . 이에 대한 적절한 인터페이스가 없으므로 필요한 파일을 수동으로 로드했습니다.

 \input lang-frq.mkii %macros to calculate average length
 \input lang-frd.mkii %language frequency tables

 \setuplayout[width=66\averagecharwidth]

보다랭-frd.mkii언어 빈도 테이블의 경우랭-frq.mkii매크로가 평균 너비를 계산하는 경우. 문서에서:

이 모듈은 언어의 평균 문자 너비를 결정하는 방법을 구현합니다. 현재 글꼴의 크기를 사용합니다.

방법~1은 너비를 무시하고 각 문자의 너비가 .5em이라고 가정합니다. 이는 대부분의 고정폭 글꼴에 해당됩니다. 방법~2는 x를 시작점으로 취하고 높이가 너비와 일치한다고 가정합니다. 방법~3이 가장 좋은 방법이며, 언어별 문자표를 기준으로 평균 너비를 결정합니다. 방법~4는 처음 두 가지 방법, 즉 균등 분포에 적용되는 문자별 너비를 혼합한 것입니다. Method~0은 총 개수를 보고하며 일반적으로 ~100입니다.

문서에는 영어, 네덜란드어, 독일어의 빈도표를 보여주는 다음 그림도 포함되어 있습니다.

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

파일 .mkii확장자가 있지만 코드는 상당히 낮은 수준의 TeX이며 ConTeXt MkIV에서도 작동합니다. 약간만 변경하면 LaTeX에서도 작동합니다.

진정한 "한 줄당 평균 66자"를 얻으려면 먼저 텍스트를 전처리하여 빈도표를 생성한 다음 해당 빈도표를 사용하여 평균 문자 너비를 계산할 수 있습니다!

메모: \averagecharwidth매크로는 현재 글꼴에서 글꼴 크기를 가져오고 현재 언어에서 문자 빈도를 선택합니다. 따라서 문서의 글꼴과 언어를 지정한 후 사용해야 합니다.

관련 정보