Estoy usando fuentes de 12 puntos con lo que es esencialmente la article
clase. (Es decir, estoy usando una clase personalizada que es parásita article.cls
).
Para establecer un uso apropiado headheight
, pruebo el tamaño de fuente al final del preámbulo fancyhdr
usando from . Luego, la altura se ajusta según si se utilizan 10 puntos, 11 puntos o 12 puntos.\geometry{}
\AtEndPreamble{}
etoolbox
Todo esto funciona bien con el siguiente código:
\documentclass[12pt]{article}
\usepackage{etoolbox}
\usepackage[T1]{fontenc}
\makeatletter
\AtEndPreamble{%
\PackageWarning{mine}{font size is \f@size}
}
\makeatother
\begin{document}
some text
\end{document}
El registro contiene:
Package mine Warning: font size is 12 on input line 13.
Sin embargo, si necesito escribir griego, quiero usar:
\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}
Sólo que ahora el registro contiene:
Package mine Warning: font size is 10 on input line 13.
¿Por qué cargar la codificación LGR cambia el tamaño de fuente? ¿Y por qué lo cambia incluso cuando T1 es la codificación predeterminada?
¿Cómo puedo prevenir o solucionar este problema?
Tenga en cuenta que soy consciente de que podría usar XeTeX, LuaTeX o ConTeXt para evitar esto. Sin embargo, para bien o para mal, esta pregunta trata sobre una solución TeX (pdf).
Si existe una forma alternativa de componer pequeñas cantidades de texto griego usando (pdf)TeX, sería perfectamente satisfactoria. Utilizo lo anterior con utf8
y inputenc
que me permite ingresar alguna que otra frase griega en caracteres Unicode y tener todo bien escrito. Cualquier cosa que respalde eso funcionaría bien.
Esta preguntaParecía relacionado, pero estoy usando TeX Live y ya tengo instaladas las fuentes tipo 1 relevantes (por ejemplo /usr/local/texlive/2014/texmf-dist/fonts/type1/public/cbfonts/grmn1200.pfb
).
Respuesta1
Puede confiar en el tamaño de fuente sólo después de \normalsize
haber sido emitido. Esto es parte de \begin{document}
.
No veo ningún problema en establecerlo \headheight
como parte de
\AtBeginDocument{...}
en vez de \AtEndPreamble
. Sin embargo, haciendo
\AtEndPreamble{%
\normalsize
\PackageWarning{mine}{font size is \f@size}
}
huellas dactilares
Package mine Warning: font size is 12 on input line 11.
en el .log
archivo.
Respuesta2
El archivo lgrenc.def
incluye la línea
\DeclareErrorFont{LGR}{cmr}{m}{n}{10}
y es esto lo que provoca el cambio de tamaño de fuente. Este comando restablece\f@size
entre otras cosas (tomado de 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}
Como puede ver, esto se basa en la idea de que se realizará otro reinicio más adelante.
Otras codificaciones no alteran el retroceso, por lo que nunca verás el hecho de que esto también restablece el tamaño.
Supongo que en términos de "¿cómo evito esto?", tendrías que desactivarlo localmente \DeclareErrorFont
(¡no es lo ideal!).
\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}