PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rahmen um einzelnen \item-Eintrag



jbecker
10-12-2010, 15:16
Hallo
Ich möchte um einen einzelnen Eintrag einer \description-Umgebung einen Rahmen setzen, etwa in der Art



\documentclass{scrartcl}
\begin{document}
\begin{description}
\item[Eintrag 1] Text\par\noindent
\framebox{\parbox{\linewidth}{
\item[Eintrag 2] Text im Rahmen}}
\item[Eintrag 3] Mehr Text
\end{description}
\end{document}


Nachteile dieser Vorgehensweise sind:
Der Rahmen umschließt das Label "Eintrag 2" nicht vollständig.
Das Label "Eintrag 2" ist nicht bündig unter den anderen Labels.

Die Packages framed, boites helfen nicht weiter.

Hat jemand einen Vorschlag für ein Makro \itemframed o.ä., welches obige Nachteile beseitigt?

voss
10-12-2010, 16:32
Hat jemand einen Vorschlag für ein Makro \itemframed o.ä., welches obige Nachteile beseitigt?

Mit ein wenig Fummelei ...


\documentclass{scrartcl}
\begin{document}

\begin{description}
\item[Eintrag 1] Text
\item[Eintrag 2] \leavevmode\put(-60,0){\fbox{\makebox[5cm][l]{%
\phantom{\textbf{Eintrag 2}} Text im Rahmen}}}
\item[Eintrag 3] Mehr Text
\end{description}

\end{document}

Herbert

jbecker
10-12-2010, 17:59
Vielen Dank für die schnelle Antwort, Herbert Voss.
Ich habe den Voschlag getestet; funktioniert prima.

Bei einem längeren Text im Rahmen macht makebox allerdings keinen Zeilenumbruch. Ich habe makebox durch parbox ersetzt und musste dann auch den \phantom-Befehl durch einen \hspace ersetzen. Nun ist ein Rahmen um einen langen Text (mit Zeilenumbruch) möglich:


\documentclass{scrartcl}
\begin{document}

\begin{description}
\item[Eintrag 1] Text
\item[Eintrag 2] \leavevmode\put(-60,0){\fbox{\makebox[16cm][l]{%
\phantom{\textbf{Eintrag 2}} Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen}}}
\item[Eintrag 3] \leavevmode\put(-60,0){\fbox{\parbox[t]{16cm}{%
\hspace*{2cm} Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen }}}
\item[Eintrag 4] Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
\end{description}
\end{document}

Allerdings geht die Einrückung verloren.

Weiss jemand hier Abhilfe?

voss
10-12-2010, 18:22
Bei einem längeren Text im Rahmen macht makebox allerdings keinen Zeilenumbruch. Ich habe makebox durch parbox ersetzt und musste dann auch den \phantom-Befehl durch einen \hspace ersetzen. Nun ist ein Rahmen um einen langen Text (mit Zeilenumbruch) möglich:

Allerdings geht die Einrückung verloren.



\documentclass{scrartcl}
\usepackage{calc}
\begin{document}

\begin{description}
\item[Eintrag 1] Text
\item[Eintrag 2] fooo
\item[Eintrag 3] \leavevmode\put(-60,0){\fbox{\parbox[t]{\textwidth+2\fboxsep}{%
\setlength\hangindent{\leftmargin+\labelwidth+\lab elsep}%
\mbox{}\phantom{\textbf{Eintrag 3}} Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen }}}
\item[Eintrag 4] Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
\end{description}

\end{document}

Herbert

jbecker
11-12-2010, 13:28
Vielen Dank. Diese Konstruktion macht genau das, was ich wollte.

Lässt sich das Ganze auch ohne Fummelei in einem Makro erledigen?
Insbes. die Befehle
\put(-60,0) und
\phantom{\textbf{Eintrag 3}} müssen bei längeren bzw. kürzeren Labels von Hand angepasst werden.
Noch eine Frage: Welche Maßeinheit benutzt der \put-Befehl?

mechanicus
11-12-2010, 13:53
Hi,


\documentclass{scrartcl}
\usepackage{calc}
\usepackage{showframe}
\makeatletter
\newsavebox\MyBox
\newcommand\FItem[2]{%
\item[]\relax%
\hspace*{-\labelsep}%
\fbox{\parbox{\textwidth-2\fboxsep-2\fboxrule}{%
\dimen@\linewidth
\advance\dimen@ -\leftmargin
\parshape=2 0\hsize \linewidth%
\leftmargin \dimen@%
{\descfont#1}\hspace*{\labelsep} #2}}%
}
\makeatother


\begin{document}
\begin{description}
\item[Eintrag 1] Text\par\noindent
\FItem{Eintrag 2a}{Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen }
\item[Eintrag 3]Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen
\end{description}
\end{document}

Gruß
Marco

voss
11-12-2010, 16:10
Lässt sich das Ganze auch ohne Fummelei in einem Makro erledigen?
Insbes. die Befehle
\put(-60,0) und
\phantom{\textbf{Eintrag 3}} müssen bei längeren bzw. kürzeren Labels von Hand angepasst werden.
Noch eine Frage: Welche Maßeinheit benutzt der \put-Befehl?

und hier, wenn alle Items exakt links anfangen sollen.


\documentclass[ngerman]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{calc,picture}
\makeatletter
\newcommand\fboxitem[2][]{%
\setlength\@tempdima{\widthof{\descfont#1}}%
\addtolength\@tempdima{\labelsep+\fboxsep+\fboxrul e}%
\item[#1]\leavevmode\put(-\the\@tempdima,0){%
\fbox{\parbox[t]{\textwidth}{%
\let\hangindent\leftmargin%
\mbox{}\phantom{\descfont#1}\kern\labelsep#2}}}}
\makeatother


\begin{document}

\begin{description}
\item[Eintrag 1] Text
\item[Eintrag 3]Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen
\fboxitem[Eintrag 4]{Text}
\fboxitem[4a]{Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen }
\fboxitem[Eintrag Sechsundsechzig]{Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen }
\fboxitem[1]{Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen }
\fboxitem[12]{Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen }
\fboxitem[123]{Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen }
\fboxitem[1234]{Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen }
\fboxitem[12345]{Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen }
\fboxitem[123456]{Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen Text im Rahmen }
\end{description}

\end{document}

\put erwartet eine Zahl in der EInheit \unitlength oder wenn man das Paket
picture lädt kann es auch irgendwas sein.

Herbert

jbecker
11-12-2010, 16:29
Herzlichen Dank an Herbert Voss und mechanicus.:)