Ausrichtung der Grundline (Baseline) in tcolorbox-Boxen

Schriftbild, Absätze und Auflistungen einstellen
zerocon
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: So 13. Jul 2014, 03:26

Ausrichtung der Grundline (Baseline) in tcolorbox-Boxen

Beitrag von zerocon »

Hi@all!

Ich würde gerne eine Auflistung von Tags machen, diese möchte ich durch farbige Boxen (mit abgerundeten Ecken) hervorherben. Das Paket tcolorbox scheint sehr mächtig zu sein, damit habe ich das hier gemacht:

Code: Alles auswählen

\documentclass[11pt, a4paper, sans]{scrartcl}

\newlength{\tagheight}
\settoheight{\tagheight}{Agyl!}

\usepackage{tcolorbox}
\newtcbox{\tag}{%
	nobeforeafter,
	minipage,
	hbox,
	height=\tagheight+12pt,
	boxsep=-5pt,
	halign=center,
	valign=center
}

\begin{document}
	\tag{Yo} \tag{yo} \tag{aaaaaa} \tag{aaaMDF}
\end{document}
Ein Problem bekomme ich allerdings momentan nicht gelöst und finde dazu auch nichts so wirklich Passendes:
Ich hätte gerne, dass die Grundlinie (Baseline) der Tags auf einer Höhe ist. Im Moment kann ich das über den Parameter valign nur lokal für einen Tag beeinflussen, daher steht beim dritten Tag das a dann höher als beim vierten.

Hat jemand von euch einen Vorschlag, wie ich das in den Griff kriege?

THX, zerocon.

markusv
Forum-Meister
Forum-Meister
Beiträge: 850
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

Beitrag von markusv »

Hallo.

Mit der Kombination der Option on line und der Phantom-Anweisung \vphantom{Aj}, um ein Platzhalter für alle Boxen mit Großbuchstaben und Buchstabe mit Unterzug zu erhalten, klappt es soweit ganz gut:

\tag als Name der Box zu verwenden ist mindestens mutig, da dieser Befehl u.a. bereits vom amsmath-Package bereitgestellt wird und beim Laden des Paketes dementsprechend Fehler auftreten. Ich habe es daher in \mytag umgenannt:

Code: Alles auswählen

\documentclass[fontsize=11pt]{scrartcl}
\usepackage{amsmath}
\usepackage{adjustbox}
\newlength{\tagheight}
\settoheight{\tagheight}{Agyl!}

\usepackage{tcolorbox}
\newtcbox{\mytag}{%
   on line,%Combines tcbox raise base with nobeforeafter 
   before upper=\vphantom{Ay},
   minipage,
   hbox,
   height=\tagheight+12pt,
   boxsep=-5pt,
   halign=center,
   valign=center
}

\begin{document}
   \mytag{Yo} \mytag{yo} \mytag{aaaaaa} \mytag{aaaMDF}
\end{document}
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de

Gast

Beitrag von Gast »

Code: Alles auswählen

\documentclass[11pt, a4paper, sans]{scrartcl}

\newlength{\tagheight}
\setlength{\tagheight}{\ht\strutbox}

\usepackage{tcolorbox}
\newtcbox{\tag}{%
   nobeforeafter,
   minipage,
   hbox,
   height=\tagheight+\baselineskip,
   boxsep=-5pt,
   halign=center,
   valign=center,
%   box align=base,
%   sidebyside align=bottom,
   before upper=\strut,
   after lower=\strut% für mehrzeilige Boxen (was hier nicht der Fall ist)
}

\begin{document}
   \tag{Yo} \tag{yo} \tag{aaaaaa} \tag{aaaMDF}
\end{document}
Zwei weitere Optionen, die hilfreich sein können, habe ich mal auskommentiert.

zerocon
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: So 13. Jul 2014, 03:26

Beitrag von zerocon »

Super, vielen Dank! Wie kann ich es jetzt noch schaffen, dass die Grundlinie innerhalb und außerhalb eines Tags auf derselben Höhe ist?

zerocon
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: So 13. Jul 2014, 03:26

Beitrag von zerocon »

Beziehungsweise eigentlich benötige ich das gerade gar nicht mehr, dass die Grundlinie innerhalb und außerhalb eines Tags diesselbe ist ...

Allerdings bin ich auf folgendes Problem gestoßen:
Wenn ich in einem Tag eine Klammer habe, ist die Box ganz leicht nach unten versetzt. Das ändert sich auch nicht, wenn ich

Code: Alles auswählen

\settoheight{\tagheight}{Ay(}
statt

Code: Alles auswählen

\settoheight{\tagheight}{Ay}
schreibe:

Code: Alles auswählen

\documentclass[fontsize=11pt]{scrartcl}

\newlength{\tagheight}
\settoheight{\tagheight}{Ay}
\usepackage{tcolorbox}
\newtcbox{\mytag}{%
	on line,
	before upper=\vphantom{Ay},
	minipage,
	hbox,
	height=\tagheight+12pt,
	boxsep=-5pt,
	halign=center,
	valign=center
}
\begin{document}
	\mytag{y} \mytag{y(a)} \mytag{a}
\end{document}

Gast

Beitrag von Gast »

Kann ich bei Anwendung meines Vorschlags nicht nachvollziehen:

Code: Alles auswählen

\documentclass[11pt, a4paper, sans]{scrartcl}

\newlength{\tagheight}
\setlength{\tagheight}{\ht\strutbox}

\usepackage{tcolorbox}
\newtcbox{\mytag}{%
   nobeforeafter,
   minipage,
   hbox,
   height=\tagheight+\baselineskip,
   boxsep=-5pt,
   halign=center,
   valign=center,
%   box align=base,
%   sidebyside align=bottom,
   before upper=\strut,
   after lower=\strut% für mehrzeilige Boxen (was hier nicht der Fall ist)
}

\begin{document}
    \mytag{y} \mytag{y(a)} \mytag{a}
\end{document}

zerocon
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: So 13. Jul 2014, 03:26

Beitrag von zerocon »

Anonymous hat geschrieben:Kann ich bei Anwendung meines Vorschlags nicht nachvollziehen
Hast Recht, mit der Methode funktioniert's! Danke!
Hatte mich nur für den ersten Vorschlag entschieden, weil ich \strut und \strutbox nicht kannte und beim nachlesen auch nicht so richtig verstanden hab bzw. kompliziert fand. :)

Antworten