나는 본질적으로 article
클래스에 12pt 글꼴을 사용하고 있습니다. (즉, 에 기생하는 사용자 정의 클래스를 사용하고 있습니다 article.cls
.)
를 사용하기 headheight
에 적절하게 설정하기 위해 from 을 사용하여 서문 끝 부분의 글꼴 크기를 테스트합니다 . 그런 다음 10pt, 11pt 또는 12pt 사용 여부에 따라 높이가 조정됩니다.fancyhdr
\geometry{}
\AtEndPreamble{}
etoolbox
이 모든 것은 다음 코드에서 잘 작동합니다.
\documentclass[12pt]{article}
\usepackage{etoolbox}
\usepackage[T1]{fontenc}
\makeatletter
\AtEndPreamble{%
\PackageWarning{mine}{font size is \f@size}
}
\makeatother
\begin{document}
some text
\end{document}
로그에는 다음이 포함됩니다.
Package mine Warning: font size is 12 on input line 13.
그러나 그리스어를 조판해야 하는 경우 다음을 사용하고 싶습니다.
\documentclass[12pt]{article}
\usepackage{etoolbox}
\usepackage[LGR,T1]{fontenc}
\makeatletter
\AtEndPreamble{%
\PackageWarning{mine}{font size is \f@size}
}
\makeatother
\begin{document}
some text
\end{document}
이제 로그에는 다음이 포함됩니다.
Package mine Warning: font size is 10 on input line 13.
LGR 인코딩을 로드하면 글꼴 크기가 전혀 변경되는 이유는 무엇입니까? 그리고 T1이 기본 인코딩인데도 왜 변경합니까?
이 문제를 어떻게 예방하거나 해결할 수 있습니까?
이 문제를 피하기 위해 XeTeX, LuaTeX 또는 ConTeXt를 사용할 수 있다는 것을 알고 있습니다. 그러나 좋든 나쁘든 이 질문은 (pdf)TeX 솔루션에 관한 것입니다.
(pdf)TeX를 사용하여 소량의 그리스어 텍스트를 조판하는 다른 방법이 있다면 그것은 완벽하게 만족스러울 것입니다. 나는 위의 와 를 사용하여 utf8
이상한 inputenc
그리스어 구문을 유니코드 문자로 입력하고 모든 것을 멋지게 조판할 수 있습니다. 이를 지원하는 것은 무엇이든 잘 작동할 것입니다.
이 질문관련이 있는 것 같았지만 TeX Live를 사용하고 있으며 관련 type1 글꼴이 이미 설치되어 있습니다(예: /usr/local/texlive/2014/texmf-dist/fonts/type1/public/cbfonts/grmn1200.pfb
).
답변1
\normalsize
발행된 후에만 글꼴 크기를 신뢰할 수 있습니다 . 이것은 의 일부입니다 \begin{document}
.
\headheight
의 일부로 설정하는 데에는 문제가 없습니다.
\AtBeginDocument{...}
. \AtEndPreamble
그러나,
\AtEndPreamble{%
\normalsize
\PackageWarning{mine}{font size is \f@size}
}
인쇄물
Package mine Warning: font size is 12 on input line 11.
파일 에서 .log
.
답변2
파일에는 lgrenc.def
다음 줄이 포함됩니다.
\DeclareErrorFont{LGR}{cmr}{m}{n}{10}
이것이 글꼴 크기를 변경하는 원인입니다. 이 명령은 \f@size
무엇보다도 재설정됩니다(에서 가져옴 ltfssbas.dtx
).
% \begin{macro}{\DeclareErrorFont}
% Declare the last resort shape! We assume that in this fontshape
% there is a 10pt font but it doesn't really matter. We only loose
% one macro name if the assumption is false. But at least the font
% should be there!
% \begin{macrocode}
\def\DeclareErrorFont#1#2#3#4#5{%
\xdef\error@fontshape{%
\noexpand\expandafter\noexpand\split@name\noexpand\string
\expandafter\noexpand\csname#1/#2/#3/#4/#5\endcsname
\noexpand\@nil}%
% \end{macrocode}
% Initialize all those internal variables which may or may not have
% values in the first seconds of NFSS' bootstraping process. Later
% on such values will be updated when an encoding is selected, etc.
%
% We definitely don't want to set |\f@encoding|; we can set all the
% others since if they are left ``blank'' any selection would grap
% ``error default values'' as well. However, this probably should
% go also.
% \changes{v2.1n}{1994/05/14}{Don't set \cs{f@encoding}}
% \begin{macrocode}
% \gdef\f@encoding{#1}%
\gdef\default@family{#2}%
\gdef\default@series{#3}%
\gdef\default@shape{#4}%
\global\let\f@family\default@family
\global\let\f@series\default@series
\global\let\f@shape\default@shape
\gdef\f@size{#5}%
\gdef\f@baselineskip{#5pt}%
}
\@onlypreamble\DeclareErrorFont
% \end{macrocode}
% \end{macro}
보시다시피, 이는 나중에 다른 재설정이 수행될 것이라는 아이디어를 기반으로 합니다.
다른 인코딩은 대체를 변경하지 않으므로 이로 인해 크기도 재설정된다는 사실을 결코 알 수 없습니다.
'이것을 어떻게 방지할 수 있나요?'라는 측면에서 로컬에서 비활성화해야 할 것 같습니다 \DeclareErrorFont
(이상적이지는 않습니다!).
\documentclass[12pt]{article}
\usepackage{etoolbox}
\let\savedDeclareErrorFont\DeclareErrorFont
\def\DeclareErrorFont#1#2#3#4#5{}
\usepackage[LGR,T1]{fontenc}
\let\DeclareErrorFont\savedDeclareErrorFont
\makeatletter
\AtEndPreamble{%
\PackageWarning{mine}{font size is \f@size}
}
\makeatother
\begin{document}
some text
\end{document}