Disminuir el tamaño de fuente en un punto

Disminuir el tamaño de fuente en un punto

Quiero crear un comando que imprima el argumento con una fuente que sea un punto más pequeña que la actual.

Por ejemplo, si un documento tiene una fuente de 11 puntos, el comando debe imprimirse con una fuente de 10 puntos. Si el documento tiene una fuente de 10 puntos, quiero que el comando se imprima con una fuente de 9 puntos.

Sin embargo, no quiero que esto esté vinculado al tamaño de fuente del documento. Si el comando se usa en un entorno que define la fuente como Xpt, quiero que el comando produzca un texto con el tamaño de fuente (X-1)pt.

Respuesta1

También puedes utilizar el paquete relsize, que permite lo que necesitas. Considere este MWE:

\documentclass{article}
\usepackage{relsize}
\begin{document}
This is normal size font.

\smaller

And this is one point smaller.
\end{document}

ingrese la descripción de la imagen aquí

Respuesta2

El tamaño de fuente actual se almacena en la macro \f@size:

\RequirePackage{fix-cm} % or use a scalable font
\documentclass{article}

\makeatletter
\newcommand{\oneptsmaller}[1]{%
  \begingroup
  \fontsize{\dimexpr\f@size pt-1pt}{\f@baselineskip}\selectfont
  #1%
  \endgroup
}
\makeatother

\begin{document}

\fontname\font\ \oneptsmaller{\fontname\font}

\large
\fontname\font\ \oneptsmaller{\fontname\font}

\footnotesize
\fontname\font\ \oneptsmaller{\fontname\font}

\end{document}

ingrese la descripción de la imagen aquí

Con una fuente escalable, por ejemplo \usepackage{baskervald},

ingrese la descripción de la imagen aquí

Nota: \fontname\fontse utiliza sólo para mostrar qué fuente se utiliza actualmente. En el caso de ybvr8tno hay atcláusula porque la fuente tiene su tamaño natural de 10 puntos.

Respuesta3

Yo personalmente lo hago con mi amada fontspecy XelaTex. Aquí hay un ejemplo con Libertine (porque es hermoso).

\usepackage{fontspec}
\setmainfont[Ligatures=TeX,]{Linux Libertine O}
\newfontfamily{\ninetypercent}[Scale=0.90]{Linux Libertine O}
\newcommand{\ninety}[1]{{\ninetypercent #1}

Al hacer esto, \ninety{text}será un 10% más pequeño que su fuente base. Para obtener un tamaño de 10 puntos a partir de 11 puntos, solo debe hacer un cálculo rápido y establecer el parámetro de escala en 0,909 si desea ser ultra preciso.

Y de esa manera puedes disminuir cualquier tamaño de fuente según el factor que desees (que puede ser 3,5%, 50%, etc...) y siempre será relativo a tu tamaño de fuente base.

Estoy de acuerdo en que es un poco excesivo, pero fontspectiene muchas funciones muy interesantes con las que jugar.

Respuesta4

Una mejora a lo propuesto por egreg, es posible tenerlo paramétrico de la siguiente manera:

\documentclass[12pt]{article}

%: ==== N pt smaller
\makeatletter
\newcommand{\hbFontSmaller}[2]{%
  \begingroup
    \fontsize{\dimexpr\f@size pt-#1pt}{\f@baselineskip}\selectfont
    #2%
  \endgroup
}
\makeatother
% ====

\begin{document}

Abcde
\hbFontSmaller{1}{Abcde}
\hbFontSmaller{2}{Abcde}
\hbFontSmaller{3}{Abcde}
\hbFontSmaller{4}{Abcde}
\hbFontSmaller{5}{Abcde}
\hbFontSmaller{6}{Abcde}
\hbFontSmaller{7}{Abcde}
\hbFontSmaller{8}{Abcde}
Abcde

\end{document}  

información relacionada