Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Rahmen um einzelnen \item-Eintrag

  1. #1
    Registrierter Benutzer
    Registriert seit
    09.12.2010
    Beiträge
    37

    Rahmen um einzelnen \item-Eintrag

    Hallo
    Ich möchte um einen einzelnen Eintrag einer \description-Umgebung einen Rahmen setzen, etwa in der Art

    Code:
    \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?

  2. #2
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von jbecker Beitrag anzeigen
    Hat jemand einen Vorschlag für ein Makro \itemframed o.ä., welches obige Nachteile beseitigt?
    Mit ein wenig Fummelei ...

    Code:
    \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

  3. #3
    Registrierter Benutzer
    Registriert seit
    09.12.2010
    Beiträge
    37
    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:
    Code:
    \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?

  4. #4
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von jbecker Beitrag anzeigen
    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.
    Code:
    \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+\labelsep}%
    \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

  5. #5
    Registrierter Benutzer
    Registriert seit
    09.12.2010
    Beiträge
    37
    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
    Code:
    \put(-60,0)
    und
    Code:
    \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?

  6. #6
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Hi,

    Code:
    \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

  7. #7
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von jbecker Beitrag anzeigen
    Lässt sich das Ganze auch ohne Fummelei in einem Makro erledigen?
    Insbes. die Befehle
    Code:
    \put(-60,0)
    und
    Code:
    \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.

    Code:
    \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+\fboxrule}%
     \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

  8. #8
    Registrierter Benutzer
    Registriert seit
    09.12.2010
    Beiträge
    37
    Herzlichen Dank an Herbert Voss und mechanicus.

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •