Diminuir o tamanho da fonte em um ponto

Diminuir o tamanho da fonte em um ponto

Quero fazer um comando que imprima o argumento com uma fonte um ponto menor que a atual.

Por exemplo, se um documento tiver fonte 11pt, o comando deverá imprimir com 10pt. Se o documento tiver fonte 10pt, quero que o comando imprima com fonte 9pt.

Não quero que isso esteja vinculado ao tamanho da fonte do documento. Se o comando for utilizado em um ambiente que define a fonte como Xpt, quero que o comando produza um texto com o tamanho da fonte (X-1)pt

Responder1

Você também pode usar o package relsize, que permite o que você precisa. Considere este MWE:

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

\smaller

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

insira a descrição da imagem aqui

Responder2

O tamanho da fonte atual é armazenado na 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}

insira a descrição da imagem aqui

Com uma fonte escalonável, digamos \usepackage{baskervald},

insira a descrição da imagem aqui

Nota: \fontname\fonté usado apenas para mostrar qual fonte está sendo usada atualmente. No caso ybvr8tnão há atcláusula porque a fonte está no tamanho natural de 10pt.

Responder3

Eu pessoalmente faço isso com meu amado fontspece XelaTex. Aqui está um exemplo com Libertine (porque é lindo).

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

Fazendo isso, sua fonte \ninety{text}será 10% menor que a fonte base. Para obter um tamanho de 10 pontos a partir de 11 pontos, basta fazer uma matemática rápida e definir o parâmetro de escala para 0,909 se quiser ser ultra preciso.

E dessa forma você pode diminuir qualquer tamanho de fonte pelo fator que desejar (que pode ser 3,5%, 50%, etc...) e sempre será relativo ao tamanho da fonte base.

Eu concordo que é um pouco exagerado, mas fontspectem muitos recursos interessantes para brincar.

Responder4

Uma melhoria em relação ao que o egreg propôs, é possível parametrizá-lo da seguinte forma:

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

informação relacionada