PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \f@size-Frage (mit ein bisschen tikz)



Spindoctor
02-10-2010, 12:53
Hallo!

Ich möchte gern eine Grafik erstellen, die sich schön in den Lauftext einfügt. Leider gelingt mir das nur fast ;-)

Minimalbeispiel


\documentclass{article}
\usepackage{tikz}

\makeatletter
\newcommand{\fontsizebox}{%
\begin{tikzpicture}%
\fill[fill=black] (0,0) rectangle (\f@size pt,\f@size pt);%
\end{tikzpicture}%
}%
\makeatother

\begin{document}
\Huge \fontsizebox Hg

\large \fontsizebox Hg

\normalsize \fontsizebox Hg

\tiny \fontsizebox Hg
\end{document}
Ich habe damit gerechnet, dass die Box immer genauso groß ist wie das "H". Tatsächlich (ohne es genau überprüft zu haben) scheint mir, dass die Box eine Höhe vom untersten Punkt vom "g" bis zum obersten Punkt vom "H" hat aber beim untersten Punkt von "H" anfängt. Das ist nicht das was ich wollte.

Wie kann ich folgendes erreichen?


Eine Box, die genauso hoch ist wie das "H"?
Eine Box, die genauso hoch ist wie der unterste Punkt vom "g" bis zum obersten Punkt vom "H", aber so, dass die Box auch beim untersten Punkt vom "g" anfängt?

Danke schonmal!!!

mechanicus
02-10-2010, 13:06
Hi,

Möglichkeit


\documentclass{article}
\usepackage{tikz}
\usepackage{calc}
\newlength{\sizeheight}
\newlength{\sizedepth}
\makeatletter
\newcommand{\fontsizebox}{%
\setlength{\sizeheight}{\heightof{Hg}}
\setlength{\sizedepth}{\depthof{Hg}}
\begin{tikzpicture}[baseline]%
\fill[fill=black] (0,-\sizedepth) rectangle (\f@size pt,\sizeheight);%
\end{tikzpicture}%
}%
\makeatother

\begin{document}
\Huge \fontsizebox Hg

\large \fontsizebox Hg

\normalsize \fontsizebox Hg

\tiny \fontsizebox Hg
\end{document}

Gruß
Marco

voss
02-10-2010, 13:08
Wie kann ich folgendes erreichen?


Eine Box, die genauso hoch ist wie das "H"?
Eine Box, die genauso hoch ist wie der unterste Punkt vom "g" bis zum obersten Punkt vom "H", aber so, dass die Box auch beim untersten Punkt vom "g" anfängt?




\documentclass{article}
\usepackage{xcolor}

\newcommand\fontsizebox[1]{{\fboxsep0pt\colorbox{black}{\phantom{#1}}}}

\begin{document}
\Huge \fontsizebox{H}H\fontsizebox{g}g

\large \fontsizebox{g}H\fontsizebox{g}g

\normalsize \fontsizebox{H}H\fontsizebox{g}g

\tiny \fontsizebox{Hg}Hg

\end{document}

Spindoctor
02-10-2010, 13:18
Danke für eure Antworten, das funktioniert ja super!

Wenn ich jetzt eine Box machen will, die genauso groß ist wie die Versalhöhe (also Schrifthöhe ohne Unterlänge), ist es dann egal welchen Großbuchstaben ich nehme, bzw. gibts da ein spezielles Kommando dafür, wo ich keinen Buchstaben angeben muss?

voss
02-10-2010, 13:19
Möglichkeit



mit einer Box kann man das vereinfachen:

\documentclass{article}

\newsavebox\CBox
\newcommand\fontsizebox[1]{%
\sbox\CBox{#1}\rule[-\dp\CBox]{\wd\CBox}{\dimexpr\ht\CBox+\dp\CBox}}

\begin{document}

\Huge \fontsizebox{H}H\fontsizebox{Hg}Hg\fontsizebox{g}g

\end{document}

voss
02-10-2010, 13:24
Wenn ich jetzt eine Box machen will, die genauso groß ist wie die Versalhöhe (also Schrifthöhe ohne Unterlänge), ist es dann egal welchen Großbuchstaben ich nehme, bzw. gibts da ein spezielles Kommando dafür, wo ich keinen Buchstaben angeben muss?


\documentclass{article}

\newsavebox\CBox
\newcommand\fontsizebox[1]{%
\sbox\CBox{#1}\rule[-\dp\CBox]{\wd\CBox}{\dimexpr\ht\CBox+\dp\CBox}}
\newcommand\fontbox{\rule{5pt}{\ht\strutbox}}

\begin{document}
\Huge
\fontbox\space
\fontsizebox{H}H\fontsizebox{Hg}Hg\fontsizebox{g}g

\end{document}

Herbert

mechanicus
02-10-2010, 13:27
mit einer Box kann man das vereinfachen:

Das hat für mich zwei Nachteile

nutzt nicht tikz, wie vom doctor gewünscht :D
nutzt zuviel TeX, was wohl zur Verwirrung führen kann.


Wobei ich auch zuerst an eine einfache hbox gedacht habe :rolleyes::p

Gruß
Marco

Spindoctor
02-10-2010, 13:34
... ok, danke!
Heißt das, es ist egal, welcher Großbuchstabe?

Spindoctor
02-10-2010, 13:36
ums klar zu machen - ich will nicht wirklich nur eine Box machen - es geht immer noch um mein progressbar-package (es ist fast fertig). Allerdings mach ich jetzt noch die Höhe mit \f@size*0.75, was irgendwie schlampig ist, nicht wahr?

mechanicus
02-10-2010, 13:39
ums klar zu machen - ich will nicht wirklich nur eine Box machen - es geht immer noch um mein progressbar-package (es ist fast fertig). Allerdings mach ich jetzt noch die Höhe mit \f@size*0.75, was irgendwie schlampig ist, nicht wahr?
Sorry, aber ich habe das nicht so richtig verfolgt und weiß daher nicht, was du bezwecken willst :cool:

Gruß
Marco

Spindoctor
02-10-2010, 13:43
oh, kein problem, ist ja auch schon eine zeitlang her - du hast mir jdfs. ziemlich geholfen bei dem package damals :)

Anyway, ich möchte eine Grafik machen, die sich schön in den Lauftext einfügt. Das heißt, dass ich eine Grafik erstellen will, die genau die Versalhöhe hat (oder sich auf die Versalhöhe bezieht zumindest). Ist da eine der vorgestellten Techniken geeignet?

mechanicus
02-10-2010, 13:50
Anyway, ich möchte eine Grafik machen, die sich schön in den Lauftext einfügt. Das heißt, dass ich eine Grafik erstellen will, die genau die Versalhöhe hat (oder sich auf die Versalhöhe bezieht zumindest). Ist da eine der vorgestellten Techniken geeignet?
Du kannst doch die tikz-Umgebung nutzen. Für die Festelegung der Höhe hast du ja nun schon verschiedene Techniken kennengelernt.

Gruß
Marco

Spindoctor
02-10-2010, 13:53
Ja stimmt. Möcht nur noch wissen, ob alle Großbuchstaben gleich groß sind. Oder muss ich \heightof{ABCDEFGHIJKLMNOPQRSTUVWXYZ} verwenden? :)

voss
02-10-2010, 14:41
oh, kein problem, ist ja auch schon eine zeitlang her - du hast mir jdfs. ziemlich geholfen bei dem package damals :)

Anyway, ich möchte eine Grafik machen, die sich schön in den Lauftext einfügt. Das heißt, dass ich eine Grafik erstellen will, die genau die Versalhöhe hat (oder sich auf die Versalhöhe bezieht zumindest). Ist da eine der vorgestellten Techniken geeignet?

das ist doch völlig egal, wie hoch die Grafik ist. Du machst einfach

\resizebox{!}{\ht\strut}{...}

Herbert

Spindoctor
04-10-2010, 12:16
Ok, hab jetzt die Technik mit calc und \heightof{I} verwendet.

Danke für den \resizebox-Tipp, voss. Ich nehm an, der sorgt dafür, dass man ein Objekt genau auf die Höhe des Lauftexts bringt. Das ist in meinem Fall leider (auch) nicht geeignet, weil ich in meinem Paket auch die Möglichkeit geben will, eine andere Höhe als die voreingestellte zu verwenden. ich brauch also tatsächlich die Angabe der Versalhöhe als length. Der \resizebox-Tipp wird mir in der Zukunft aber sicher auch mal helfen :)

Aber das müsst jetzt eh passen.