Discussion:
Maße der \colorbox beeinflußbar?
(zu alt für eine Antwort)
Markus Schütz
2004-09-14 15:15:42 UTC
Permalink
Hallo,

ich habe folgendes Problem. In einem Satz verwende ich mehrere \colorbox. Wenn mann sich nun das Ergebnis anschaut fällt auf, das bei Wörtern mit Großbuchstaben bzw. mit solchen die weiter nach unten "ragen" (y, g, ...) die \colorbox entsprechend gestreckt wird. Sieht dann nicht besonders ansprechend aus, vor allem wenn man mehrere solcher Sätze verwendet.

Ist es möglich diese auf eine feste Größe (eventuell abhängig von der Schriftgröße) zu begrenzen?

Danke für eure Hilfe
Markus

Minimalbeispiel (hoffe ich zumindest)
-------------------------------------

\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage{color}

\ifx\***@rgb\@undefined\else
\definecolor{lightred}{rgb}{1,0.9,0.7}
\definecolor{lightblue}{rgb}{0.6,0.8,1}
\definecolor{lightblueb}{rgb}{0.8,0.9,1}
\definecolor{gray}{rgb}{0.9,0.9,0.9}
\fi

\newcommand{\cbred}{\colorbox{lightred}}
\newcommand{\cbblue}{\colorbox{lightblue}}
\newcommand{\cbblueb}{\colorbox{lightblueb}}
\newcommand{\cbgray}{\colorbox{gray}}

\begin{document}

\cbred{I} \cbblueb{can't} \cbblue{come} \cbgray{today}.

\end{document}
Ulrich Schwarz
2004-09-14 15:57:26 UTC
Permalink
Markus Schütz <***@web.de> writes:


[...]
Post by Markus Schütz
\newcommand{\cbred}{\colorbox{lightred}}
Ungetestet: \newcommand[1]\cbred{\colorbox{lightred}{\strut #1}}

Alternativ eine Bastellösung: statt \strut \vphantom{Mq} (bzw.
geeignete Buchstaben je nach Schrift)

Ulrich
--
Getting lost in the \footnotes and \temporals? Talcum makes LaTeX more fun.
Now with whole new bugs ;), and, of course, still with special Beamer support.
http://talcum.sarovar.org/ (Current release: 0.4.2, 20040910)
Markus Schütz
2004-09-14 17:41:51 UTC
Permalink
Sorry,

aber läuft mit beiden Befehlen nicht. Möglicherweise habe ich sie auch falsch eingesetzt. Da mir diese Struktur bzw. diese Befehle nicht bekannt sind, bin ich einfach mal davon ausgegangen, daß ich den alten Befehl
Post by Ulrich Schwarz
Post by Markus Schütz
\newcommand{\cbred}{\colorbox{lightred}}
durch den neuen ersetzen soll.
Post by Ulrich Schwarz
Ungetestet: \newcommand[1]\cbred{\colorbox{lightred}{\strut #1}}
Alternativ eine Bastellösung: statt \strut \vphantom{Mq} (bzw.
geeignete Buchstaben je nach Schrift)
Dies ergibt jedoch nur Fehlermeldungen, in beiden Varianten (\strut und \vphantom). Hier ein Auszug aus den Fehlermeldungen, falls es hilft:

! Missing \endcsname inserted.
<to be read again>
\@ne
l.29 \newcommand[1]
\cbred{\colorbox{lightred}{\vphantom{Mq} #1}}
The control sequence marked <to be read again> should
not appear between \csname and \endcsname.


! LaTeX Error: Command \@yargdef\@ne {[{0}}{1} already defined.
Or name \end... illegal, see p.192 of the manual.

See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...

l.29 \newcommand[1]
\cbred{\colorbox{lightred}{\vphantom{Mq} #1}}
Your command was ignored.
Type I <command> <return> to replace it with another command,
or <return> to continue without it.

! Undefined control sequence.
l.29 \newcommand[1]\cbred
{\colorbox{lightred}{\vphantom{Mq} #1}}
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.


! LaTeX Error: Missing \begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...

l.29 ...bred{\colorbox{lightred}{\vphantom{Mq} #1}
}
You're in trouble here. Try typing <return> to proceed.
If that doesn't work, type X <return> to quit.

! You can't use `macro parameter character #' in restricted horizontal mode.
<argument> \vphantom {Mq} ##
1
l.29 ...bred{\colorbox{lightred}{\vphantom{Mq} #1}
}
Sorry, but I'm not programmed to handle this case;
I'll just pretend that you didn't ask for it.
If you're in the wrong mode, you might be able to
return to the right one by typing `I}' or `I$' or `I\par'.

BTW, wo kann man etwas über diese Befehle (\strat und \vphantom) nachlesen?

Markus
Herbert Voss
2004-09-14 19:27:19 UTC
Permalink
Post by Markus Schütz
aber läuft mit beiden Befehlen nicht. Möglicherweise habe ich sie auch falsch eingesetzt. Da mir diese Struktur bzw. diese Befehle nicht bekannt sind, bin ich einfach mal davon ausgegangen, daß ich den alten Befehl
Post by Ulrich Schwarz
Post by Markus Schütz
\newcommand{\cbred}{\colorbox{lightred}}
durch den neuen ersetzen soll.
Post by Ulrich Schwarz
Ungetestet: \newcommand[1]\cbred{\colorbox{lightred}{\strut #1}}
Alternativ eine Bastellösung: statt \strut \vphantom{Mq} (bzw.
geeignete Buchstaben je nach Schrift)
dann hast du noch was anderes gemacht ...

Herbert

\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage{xcolor}

\makeatletter
\ifx\***@rgb\@undefined\else
\definecolor{lightred}{rgb}{1,0.9,0.7}
\definecolor{lightblue}{rgb}{0.6,0.8,1}
\definecolor{lightblueb}{rgb}{0.8,0.9,1}
\definecolor{gray}{rgb}{0.9,0.9,0.9}
\fi
\makeatletter
\def\TStrut{\vphantom{(g}}
\newcommand\cbred[1]{\colorbox{lightred}{#1\TStrut}}
\newcommand\cbblue[1]{\colorbox{lightblue}{#1\TStrut}}
\newcommand\cbblueb[1]{\colorbox{lightblueb}{#1\TStrut}}
\newcommand\cbgray[1]{\colorbox{gray}{#1\TStrut}}
\begin{document}

\cbred{I} \cbblueb{can't} \cbblue{come} \cbgray{today}.

\end{document}
--
http://TeXnik.de/
http://PSTricks.de/
ftp://ftp.dante.de/tex-archive/info/math/voss/Voss-Mathmode.pdf
http://www.dante.de/faq/de-tex-faq/
http://www.tex.ac.uk/cgi-bin/texfaq2html?introduction=yes
Markus Schütz
2004-09-14 19:49:45 UTC
Permalink
Danke,

jetzt geht's auch mit dieser Konstruktion.

Markus
Post by Herbert Voss
Post by Markus Schütz
aber läuft mit beiden Befehlen nicht. Möglicherweise habe ich sie auch falsch eingesetzt. Da mir diese Struktur bzw. diese Befehle nicht bekannt sind, bin ich einfach mal davon ausgegangen, daß ich den alten Befehl
Post by Ulrich Schwarz
Post by Markus Schütz
\newcommand{\cbred}{\colorbox{lightred}}
durch den neuen ersetzen soll.
Post by Ulrich Schwarz
Ungetestet: \newcommand[1]\cbred{\colorbox{lightred}{\strut #1}}
Alternativ eine Bastellösung: statt \strut \vphantom{Mq} (bzw.
geeignete Buchstaben je nach Schrift)
dann hast du noch was anderes gemacht ...
Herbert
\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage{xcolor}
\makeatletter
\definecolor{lightred}{rgb}{1,0.9,0.7}
\definecolor{lightblue}{rgb}{0.6,0.8,1}
\definecolor{lightblueb}{rgb}{0.8,0.9,1}
\definecolor{gray}{rgb}{0.9,0.9,0.9}
\fi
\makeatletter
\def\TStrut{\vphantom{(g}}
\newcommand\cbred[1]{\colorbox{lightred}{#1\TStrut}}
\newcommand\cbblue[1]{\colorbox{lightblue}{#1\TStrut}}
\newcommand\cbblueb[1]{\colorbox{lightblueb}{#1\TStrut}}
\newcommand\cbgray[1]{\colorbox{gray}{#1\TStrut}}
\begin{document}
\cbred{I} \cbblueb{can't} \cbblue{come} \cbgray{today}.
\end{document}
--
http://TeXnik.de/
http://PSTricks.de/
ftp://ftp.dante.de/tex-archive/info/math/voss/Voss-Mathmode.pdf
http://www.dante.de/faq/de-tex-faq/
http://www.tex.ac.uk/cgi-bin/texfaq2html?introduction=yes
Herbert Voss
2004-09-14 19:56:30 UTC
Permalink
Post by Markus Schütz
jetzt geht's auch mit dieser Konstruktion.
Post by Markus Schütz
\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage{xcolor}
\makeatletter
\definecolor{lightred}{rgb}{1,0.9,0.7}
\definecolor{lightblue}{rgb}{0.6,0.8,1}
\definecolor{lightblueb}{rgb}{0.8,0.9,1}
\definecolor{gray}{rgb}{0.9,0.9,0.9}
\fi
\makeatletter
\fboxsep=0pt

wenn es keinen Rand geben soll.

Herbert
--
http://TeXnik.de/
http://PSTricks.de/
ftp://ftp.dante.de/tex-archive/info/math/voss/Voss-Mathmode.pdf
http://www.dante.de/faq/de-tex-faq/
http://www.tex.ac.uk/cgi-bin/texfaq2html?introduction=yes
Heiko Oberdiek
2004-09-14 18:32:19 UTC
Permalink
Post by Markus Schütz
aber läuft mit beiden Befehlen nicht. Möglicherweise habe ich sie auch falsch eingesetzt. Da mir diese Struktur bzw. diese Befehle nicht bekannt sind, bin ich einfach mal davon ausgegangen, daß ich den alten Befehl
Bitte die Zeilenlaenge limitieren. Ich habe keinen zehn Meter
breiten Bildschirm und horizontales Scrollen finde ich nicht
so toll, so dass ich das Nicht-Lesen vorziehe.
Post by Markus Schütz
l.29 \newcommand[1]
\cbred{\colorbox{lightred}{\vphantom{Mq} #1}}
Siehe in einer LaTeX-Einfuehrung nach, wie das Makro \newcommand
zu verwenden ist, dann wirst du leicht darauf kommen, was hier
schiefgelaufen ist.

Viele Gruesse
Heiko <***@uni-freiburg.de>
Ulrich Schwarz
2004-09-15 08:12:59 UTC
Permalink
Post by Ulrich Schwarz
[...]
Post by Markus Schütz
\newcommand{\cbred}{\colorbox{lightred}}
Ungetestet: \newcommand[1]\cbred{\colorbox{lightred}{\strut #1}}
Hoppla... da war die rechte Hand tatsächlich schneller als die linke.
\newcommand\cbred[1]... natürlich. Ich entschuldige mich für diese
irreführende Fehlinformation.

Ulrich
--
Getting lost in the \footnotes and \temporals? Talcum makes LaTeX more fun.
Now with whole new bugs ;), and, of course, still with special Beamer support.
http://talcum.sarovar.org/ (Current release: 0.4.2, 20040910)
Stefan Lagotzki
2004-09-14 19:12:03 UTC
Permalink
Post by Markus Schütz
ich habe folgendes Problem. In einem Satz verwende
ich mehrere \colorbox. Wenn mann sich nun das Ergebnis
anschaut fällt auf, das bei Wörtern mit Großbuchstaben
bzw. mit solchen die weiter nach unten "ragen"
(y, g, ...) die \colorbox entsprechend gestreckt wird.
Sieht dann nicht besonders ansprechend aus, vor allem
wenn man mehrere solcher Sätze verwendet.
So sollte es funktionieren:

\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage{color}

\definecolor{b1}{rgb}{1,0.9,0.7}
\definecolor{b2}{rgb}{0.8,0.9,1.0}

\newcommand{\zeichen}{%
ABCDEFGHIJKLMNOPQRSTUVW()abcdefghijklmnopqrstuvwxyz%
}%% falls notwendig: Umlaute & Akzente beachten!

%% eine einfache Variante:
\newcommand{\cbred}[1]{%
\colorbox{b1}{\vphantom{\zeichen}#1}
}

%% eine etwas bessere Variante:
%% \cbbox{hintergrundfarbe}{text}
\newcommand{\cbbox}[2]{%
\colorbox{#1}{\vphantom{\zeichen}#2}
}

\begin{document}
\section{Colors}
\cbred{I} \cbred{can't} \cbred{go} \cbred{today}.
\cbbox{b2}{Changing} \cbbox{b1}{colors}.
\end{document}
Markus Schütz
2004-09-14 19:41:18 UTC
Permalink
Vielen Dank,

sieht ja jetzt schon mal sehr ansprechend aus im Gegensatz zu vorher, aber eine kleine Sache hätte ich noch.
Kann man jetzt die Höhe der \colorbox so ändern, daß sie insgesamt etwas kleiner ausfällt, so daß die Buchstaben gerade so den Rand berühren? (Zweck: Platzersparnis, da sehr viele so gestaltete Sätze.)
Post by Markus Schütz
Post by Markus Schütz
ich habe folgendes Problem. In einem Satz verwende
ich mehrere \colorbox. Wenn mann sich nun das Ergebnis
anschaut fällt auf, das bei Wörtern mit Großbuchstaben
bzw. mit solchen die weiter nach unten "ragen"
(y, g, ...) die \colorbox entsprechend gestreckt wird.
Sieht dann nicht besonders ansprechend aus, vor allem
wenn man mehrere solcher Sätze verwendet.
\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage{color}
[...]

Mfg Markus
Stefan Lagotzki
2004-09-14 20:33:19 UTC
Permalink
Kann man jetzt die Hoehe der \colorbox so aendern, dass
sie insgesamt etwas kleiner ausfaellt, so dass die Buchstaben
gerade so den Rand berühren? (Zweck: Platzersparnis, da sehr
viele so gestaltete Saetze.)
Die Laenge \fboxsep setzen, z.B. \setlength{\fboxsep}{1pt}

Stefan

.
Stefan Lagotzki
2004-09-14 20:58:45 UTC
Permalink
Eine kleine Korrektur noch. In den Makros muss
jede Zeile mit einem %-Zeichen abgeschlossen werden
siehe unten.
Eine Einschraenkung der Loesung: Es darf kein Zeilen-
umbruch im Text sein.

\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage{color}

\definecolor{b1}{rgb}{1,0.9,0.7}
\definecolor{b2}{rgb}{0.8,0.9,1.0}

\setlength{\fboxsep}{1pt}

\newcommand{\zeichen}{%
ABCDEFGHIJKLMNOPQRSTUVW()abcdefghijklmnopqrstuvwxyz%
}%% falls notwendig: Umlaute & Akzente beachten!

%% eine einfache Variante:
\newcommand{\cbred}[1]{%
\colorbox{b1}{\vphantom{\zeichen}#1}%
}%

%% eine etwas bessere Variante:
%% \cbbox{hintergrundfarbe}{text}
\newcommand{\cbbox}[2]{%
\colorbox{#1}{\vphantom{\zeichen}#2}%
}%

\begin{document}
\section{Colors}
\cbred{I} \cbred{can't} \cbred{go} \cbred{today}.
\cbbox{b2}{Changing} \cbbox{b1}{colors}.
\end{document}
Loading...