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 '17, 14:10

tom75's gravatar image

tom75
2.2k277984
Akzeptiert-Rate: 57%

bearbeitet 07 Jan '17, 15:36

saputello's gravatar image

saputello
11.1k174365


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 '17, 15:26

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 07 Jan '17, 15:34

@saputello Danke!

(07 Jan '17, 17: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 '17, 15:54

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 07 Jan '17, 16:07

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×9
×7
×6
×2

gestellte Frage: 07 Jan '17, 14:10

Frage wurde gesehen: 9,481 Mal

zuletzt geändert: 07 Jan '17, 18:17