Schriftgröße um einen Punkt verkleinern

Schriftgröße um einen Punkt verkleinern

Ich möchte einen Befehl erstellen, der das Argument mit einer Schriftart druckt, die einen Punkt kleiner ist als die aktuelle.

Wenn ein Dokument beispielsweise eine Schriftgröße von 11 pt hat, muss der Befehl mit 10 pt drucken. Wenn das Dokument eine Schriftgröße von 10 pt hat, soll der Befehl mit 9 pt drucken.

Ich möchte jedoch nicht, dass dies an die Schriftgröße des Dokuments gebunden ist. Wenn der Befehl in einer Umgebung verwendet wird, in der die Schriftart als Xpt definiert ist, möchte ich, dass der Befehl einen Text mit der Schriftgröße (X-1)pt erzeugt.

Antwort1

Sie können auch das Paket verwenden relsize, das alles bietet, was Sie brauchen. Betrachten Sie dieses MWE:

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

\smaller

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

Bildbeschreibung hier eingeben

Antwort2

Die aktuelle Schriftgröße wird im Makro gespeichert \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}

Bildbeschreibung hier eingeben

Mit einer skalierbaren Schriftart, sagen wir \usepackage{baskervald},

Bildbeschreibung hier eingeben

Hinweis: \fontname\fontwird nur verwendet, um anzuzeigen, welche Schriftart aktuell verwendet wird. In diesem Fall ybvr8tgibt es keine atKlausel, da die Schriftart ihre natürliche Größe von 10pt hat.

Antwort3

Ich persönlich mache es mit meiner Liebsten fontspecund XelaTex. Hier ist ein Beispiel mit Libertine (weil es schön ist).

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

Dadurch \ninety{text}wird Ihre Schrift 10 % kleiner als Ihre Basisschriftart. Um aus einer 11pt-Schriftart eine 10pt-Schriftart zu machen, müssen Sie nur kurz rechnen und den Skalierungsparameter auf 0,909 setzen, wenn Sie ultrapräzise sein wollen.

Auf diese Weise können Sie jede Schriftgröße um den Faktor Ihrer Wahl verkleinern (das können 3,5 %, 50 % usw. sein), und zwar immer relativ zu Ihrer Basisschriftgröße.

Ich stimme zu, dass es etwas übertrieben ist, aber fontspeces hat eine Menge sehr spaßiger Funktionen zum Spielen.

Antwort4

Als Verbesserung gegenüber dem Vorschlag von egreg ist es möglich, es wie folgt parametrisch zu gestalten:

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

verwandte Informationen