Ich benötige eine umrahmte Box in Textbreite. Der vertikale Abstand des Textes soll jeweils 1.5\baselineskip sein und der horizontale Abstand zum linken Rahmen 1ex.

Folgendes Beispiel

Öffne in Overleaf
\documentclass[12pt,a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\newcommand*\widefbox[1]{\fbox{\parbox{\dimexpr\textwidth-2\fboxsep-2\fboxrule\relax}{\vspace{1.5\baselineskip}\hspace{1ex}#1\vspace{1.5\baselineskip}}}}

\begin{document}
\widefbox{XYZ}
\end{document}

führt zu einem overfull \hbox-Fehler. Was muss ich von der Breite der parbox noch abziehen?

gefragt 07 Jan, 08:10

tom75's gravatar image

tom75
2.1k3676
Akzeptiert: 86%

bearbeitet 07 Jan, 09:36

saputello's gravatar image

saputello
20.2k33257


Wenn Du das Paket showframe lädst, siehst Du sofort, wo das Problem liegt:

Öffne in Overleaf
\documentclass[12pt,a4paper]{scrartcl}
\usepackage{showframe}
\usepackage[utf8]{inputenc}
\newcommand*\widefbox[1]{\fbox{\parbox{\dimexpr\textwidth-2\fboxsep-2\fboxrule\relax}{\vspace{1.5\baselineskip}\hspace{1ex}#1\vspace{1.5\baselineskip}}}}

\begin{document}
\widefbox{XYZ}
\end{document}

Box nicht am linken Rand

Die Box steht nicht am linken Rand. Der Verdacht liegt nahe, dass dies am Absatzeinzug liegt, was sich auch bestätigt, wenn man diesen verhindert:

Öffne in Overleaf
\documentclass[12pt,a4paper]{scrartcl}
\usepackage{showframe}
\usepackage[utf8]{inputenc}
\newcommand*\widefbox[1]{\fbox{\parbox{\dimexpr\textwidth-2\fboxsep-2\fboxrule\relax}{\vspace{1.5\baselineskip}\hspace{1ex}#1\vspace{1.5\baselineskip}}}}

\begin{document}
\noindent\widefbox{XYZ}
\end{document}

Box ohne Absatzeinzug

Empfehlenswert dürfte sein, direkt in die Definition Absatzenden und Verhinderung des Absatzeinzugs einzubauen. Dann bekommt man keine Probleme, wenn man davor oder danach den Absatz vergisst:

Öffne in Overleaf
\documentclass[12pt,a4paper]{scrartcl}
\usepackage{showframe}
\usepackage[utf8]{inputenc}
\newcommand*\widefbox[1]{\par\noindent\fbox{\parbox{\dimexpr\textwidth-2\fboxsep-2\fboxrule\relax}{\vspace{1.5\baselineskip}\hspace{1ex}#1\vspace{1.5\baselineskip}}}\par}

\begin{document}
\widefbox{XYZ}
\end{document}

So ganz hält Deine Definition die Spezifikation übrigens nicht ein. Zu den gewünschten Abständen, die Du mit \vspace und \hspace umsetzt, kommt zusätzlich noch \fboxsep. Wirklich die gewünschten Abstände gäbe beispielsweise:

Öffne in Overleaf
\documentclass[12pt,a4paper]{scrartcl}
\usepackage{showframe}
\usepackage[utf8]{inputenc}
\newcommand*\widefbox[1]{\par\noindent\frame{\hspace{1ex}\parbox{\dimexpr\textwidth-2ex\relax}{\vspace{1.5\baselineskip}#1\vspace{1.5\baselineskip}}\hspace{1ex}}\par}
\usepackage{mwe}
\begin{document}
\widefbox{XYZ}

\widefbox{\blindtext}
\end{document}

Wobei im Falle eines mehrzeiligen Textes der linke Rand für alle Zeilen eingehalten wird und auch rechts ein gleicher Rand definiert ist:

auch mehrzeilig

Nebenbei sei noch auf das Paket tcolorbox hingewiesen, das eine Vielzahl von Möglichkeiten für Boxen mit Rahmen und ggf. Farbe bietet.

Permanenter link

beantwortet 07 Jan, 09:26

saputello's gravatar image

saputello
20.2k33257

bearbeitet 07 Jan, 09:34

@saputello Danke!

(07 Jan, 11:24) tom75

In ConTeXt MKIV gibt es sowas natürlich out-of-the-box.

Öffne in Overleaf
\starttext

\startframedtext[width=\textwidth]
  \input knuth
\stopframedtext

\stoptext

alt text

Für Finetuning von horizontalen und vertikalen Abständen definiert man sich am besten direkt seine eigen Instanz davon.

Öffne in Overleaf
\defineframedtext
  [widefbox]
  [
    width=\textwidth,
    offset=0pt,
    loffset=1ex,
    roffset=1ex,
    toffset=1.5\lineheight,
    boffset=1.5\lineheight,
  ]

\starttext

\startwidefbox
  \input knuth
\stopwidefbox

\stoptext

alt text

Wenn man die Syntax mit \start...\stopwidefbox nicht mag, sondern lieber den Name als Option geben würde muss man framed benutzen.

Öffne in Overleaf
\defineframed
  [widefbox]
  [
    width=\textwidth,
    align=width,
    loffset=1ex,
    roffset=1ex,
    toffset=1.5\lineheight,
    boffset=1.5\lineheight,
  ]

\starttext

\startframed[widefbox]
  \input knuth
\stopframed

\stoptext

alt text

Permanenter link

beantwortet 07 Jan, 09:54

Henri's gravatar image

Henri
11.7k42235

bearbeitet 07 Jan, 10:07

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×9
×5
×4
×2

Frage gestellt: 07 Jan, 08:10

Frage wurde angeschaut: 940 Mal

Zuletzt aktualisiert: 07 Jan, 12:17