Text genau umschließende Boxen um Überschriften

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Text genau umschließende Boxen um Überschriften

von Caput_12 » So 24. Mär 2019, 16:02

Anonymous hat geschrieben:\chapterlinesformat hat gar kein Argument für einen Einzug. Also wäre auch das \hskip fehl am Platz. Siehe dazu auch die Erklärung von \chapterlinesformat in der KOMA-Script-Anleitung. Ebenso sollte man bei \chapterlinesformat natürlich nicht \raggedsection, sondern \raggedchapter verwenden. Und natürlich gehört #3 dann auch nicht mit in das Argument von \@hangfrom. Vgl. auch hier die Voreinstellung in der Erklärung zu \chapterlinesformat in der Anleitung.
Also \sectionlinesformats drittes und viertes Argument sind \chapterlinesformats zweites und drittes Argument. Verstanden. Dann müsste folgendes ja die Lösung sein:
\renewcommand*{\chapterlinesformat}[3]{%
  \fbox{\fbox{\fbox{\begin{varwidth}{\dimexpr\linewidth-6\fboxsep-6\fboxrule\relax}\raggedchapter\@hangfrom{#2}{#3}\end{varwidth}}}}
}
Das gibt aber
! You can't use `\vadjust' in internal vertical mode.
\par ->\relax \ifhmode \unskip \fi \vadjust 
                                            {\hbox {\kern \hangindent \kern ...
Anonymous hat geschrieben: Der Status Rückfrage ist übrigens Helfern vorbehalten.
Sorry 🙈

von Gast » So 24. Mär 2019, 15:04

\chapterlinesformat hat gar kein Argument für einen Einzug. Also wäre auch das \hskip fehl am Platz. Siehe dazu auch die Erklärung von \chapterlinesformat in der KOMA-Script-Anleitung. Ebenso sollte man bei \chapterlinesformat natürlich nicht \raggedsection, sondern \raggedchapter verwenden. Und natürlich gehört #3 dann auch nicht mit in das Argument von \@hangfrom. Vgl. auch hier die Voreinstellung in der Erklärung zu \chapterlinesformat in der Anleitung.

Neue Frage bitte immer als neue Frage stellen! Wobei ich dir schon jetzt verraten kann, dass das nicht unproblematisch ist. Generell erinnert das Layout dann eher an refman, wobei auch dort nicht unterschiedliche Einrückungen für unterschiedliche Ebenen verwendet werden. Ich betrachte auch das als eher abstruse Anforderung.

Der Status Rückfrage ist übrigens Helfern vorbehalten.

von Caput_12 » So 24. Mär 2019, 14:49

Schon einmal vielen Dank für die Hilfe, das hat mir sehr, sehr viel weitergeholfen!

Ich habe den Code versucht, noch auf mein genaueres Anforderungsprofil anzupassen. Fragen:
1. Warum muss ich auf /hskip verzichten, damit chapterlinesformat funktioniert?
2. Wie bekomme ich bei den Chapters auch noch den Zeilenumbruch hin? Habe zwar gesagt, dass ich das eigentlich nicht brauche, aber da das bei den Sections funktioniert, hätte ich das nun auch der Vollständigkeit halber gerne bei den Chapter :D

Zudem muss ich noch ein weiteres Problem lösen, zu dem ich nicht einmal vernünftige Suchbegriffe finde. Soll ich dazu einen neuen Thread erstellen? Ich beschreibe es dennoch kurz: Das ganze Seitendesign soll ähnlich wie verschachtelte Listen angeordnet sein. Also Chapterüberschrift und nachfolgender Text stehen ganz links am Rand, also so wie immer. Ab einem Sectiontitel soll aber alles etwas einrücken (z.B. 1cm). Subsections widerum werden noch weiter eingerückt (z.B. einen weiteren cm). Alles jeweils inklusive Überschrift und global festgelegt.

\documentclass[a4paper]{scrreprt} 

\usepackage{lipsum} 
\usepackage{varwidth} 

\makeatletter 

\renewcommand*{\chapterlinesformat}[3]{%
  \fbox{\fbox{\fbox{\begin{varwidth}{\dimexpr\linewidth-6\fboxsep-6\fboxrule\relax}\raggedsection\@hangfrom{#2#3}{}\end{varwidth}}}}
}

\renewcommand*{\sectionlinesformat}[4]{% 
  \ifstr{#1}{section}{% nur für \section: 
    \fbox{\fbox{\begin{varwidth}{\dimexpr\linewidth-4\fboxsep-4\fboxrule\relax}\raggedsection\@hangfrom{\hskip #2#3}{#4}\end{varwidth}}}% mehrzeilig in zwei Boxen packen 
  }{% 
    \ifstr{#1}{subsection}{% nur für subsection 
      \fbox{\begin{varwidth}{\dimexpr\linewidth-2\fboxsep-2\fboxrule\relax}\raggedsection\@hangfrom{\hskip #2#3}{#4}\end{varwidth}}% mehrzeilig in eine Box packen 
    }{% sonst 
      \@hangfrom{\hskip #2#3}{#4}% Originaldefinition 
    }% 
  }% 
} 
\makeatother 

\begin{document} 

\chapter{Ch. 1}

\section{Section 1} 

\lipsum[1] 

\section{Section 2 mir mehr als einer Zeile Text, damit man auch das einmal gesehen hat} 

\lipsum[2] 

\subsection{Subsection 1 mit zwei Zeilen Text um zu sehen, wie das aussieht wenn das mal passiert} 


\chapter{Ch. 2 wenn man es ganz ganz ganz ganz super mega lang macht}

\lipsum[3] 

\section{Section 1 mir mehr als einer Zeile Text, damit man auch das einmal gesehen hat} 

\end{document} 

von Gast » So 24. Mär 2019, 12:21

PS: Im subsection-Fall müssen natürlich von der Breite 4\fboxsep und 4\fboxrule statt jeweils nur 2 abgezogen werden.

von Gast » So 24. Mär 2019, 12:19

Wenn die Überschrift ohnehin nur einzeilig ist, geht das mit KOMA-Script-Klassen extrem einfach:
\documentclass[a4paper]{scrartcl}

\usepackage{lipsum}

\makeatletter
\renewcommand*{\sectionlinesformat}[4]{%
  \ifstr{#1}{section}{% nur für \section:
    \fbox{\hskip #2#3#4}% einzeilig in eine Box packen
  }{%
    \ifstr{#1}{subsection}{% nur für subsection
      \fbox{\fbox{\hskip #2#3#4}}% einzeilig in zwei Boxen packen
    }{% sonst
      \@hangfrom{\hskip #2#3}{#4}% Originaldefinition
    }%
  }%
}
\makeatother

\begin{document}

\section{Section 1}

\lipsum[1]

\section{Section 2}

\lipsum[2]

\subsection{Subsection 1}


\end{document}
Wenn die Überschriften mehrzeilig sein dürfen, muss man in der \fbox zusätzlich eine varwidth-Umgebung o. ä. verwenden:
\documentclass[a4paper]{scrartcl}

\usepackage{lipsum}
\usepackage{varwidth}

\makeatletter
\renewcommand*{\sectionlinesformat}[4]{%
  \ifstr{#1}{section}{% nur für \section:
    \fbox{\begin{varwidth}{\dimexpr\linewidth-2\fboxsep-2\fboxrule\relax}\raggedsection\@hangfrom{\hskip #2#3}{#4}\end{varwidth}}% mehrzeilig in eine Box packen
  }{%
    \ifstr{#1}{subsection}{% nur für subsection
      \fbox{\fbox{\begin{varwidth}{\dimexpr\linewidth-2\fboxsep-2\fboxrule\relax}\raggedsection\@hangfrom{\hskip #2#3}{#4}\end{varwidth}}}% mehrzeilig in zwei Boxen packen
    }{% sonst
      \@hangfrom{\hskip #2#3}{#4}% Originaldefinition
    }%
  }%
}
\makeatother

\begin{document}

\section{Section 1}

\lipsum[1]

\section{Section 2 mir mehr als einer Zeile Text, damit man auch das einmal
  gesehen hat}

\lipsum[2]

\subsection{Subsection 1}


\end{document}
Mit titlesec kann man vermutlich entsprechendes machen. Aber damit kenne ich mich nicht aus.

von Caput_12 » So 24. Mär 2019, 11:53

Anonymous hat geschrieben: Soll das für alle Überschriften oder nur für einzelne so sein?
Für alle in diesem Dokument.
Anonymous hat geschrieben: Soll der Rahmen über die ganze Textbreite oder nur über die Breite der Überschrift gehen (nach dem Bild vermutlich letzteres)?
Letzteres, deshalb das Beispielbild. Mit mdframed hätte ich ja bereits eine Lösung für die gesamte Textbreite, das möchte ich aber nicht.
Anonymous hat geschrieben: Wie soll das bei mehrzeiligen Überschriften sein?
Die sollen dann im Ganzen durch eine Box umschlossen sein. Es kann aber davon ausgegangen werden, dass ich die Überschriften kurz genug fasse, dass sie einzeilig bleiben. Ist mir per Hand bislang auch immer gut gelungen, ohne zu quetschen.
Anonymous hat geschrieben: Muss es mit article und titlesec sein oder darf es auch ein anderes Paket wie sectsty sein oder kann man auch gleich eine Klasse verwenden, die selbst die Änderung der Überschriftenformatierung unterstützt?
Was auch immer hilft, das Problem zu lösen, ist willkommen :)
Anonymous hat geschrieben: Eine persönliche Bemerkung sei mir erlaubt: Solche Trauerränder finde ich eher hässlich. Außerdem sollte man darauf achten, dass die nicht zu dicht am Text anliegen, sonst beeinflusst es auch noch die Lesbarkeit. Man sollte bei Design ja auch etwas Rücksicht auf Menschen mit diversen Sehfehlern nehmen. Ganz besonders hässlich wird es außerdem, wenn die Abstände wie in deinem Beispiel ungleichmäßig sind (vor der ersten 1 ist kleiner als nach der zweiten 1, bei der zweiten Überschrift ist das noch viel krasser).
Die bekommt auch außer mir vermutlich niemand zu sehen. Es geht nur darum, Lernzettel zu produzieren. Da haben sich bei mir diese (mehrfachen) Einkästelungen der Überschriften als besonders übersichtlich herausgestellt. Schön muss es nicht sein, ich will nur schnell mit einem Blick sehen, was welcher Teil enthält und daher die Überschriften besonders stark hervorheben.

Die besondere Hässlichkeit in meinem Beispiel kommt daher, dass ich die Kästen mit Paint eingefügt habe. Symmetrie in den Abständen ist mir da natürlich auch wichtig, aber das leistet vermutlich jede Lösung.

von Gast » So 24. Mär 2019, 09:59

Caput_12 hat geschrieben:In der endgültigen Version soll chapter dann dreifach umrahmt, section zweifach und subsection einfach umrahmt sein. Aber das bekomme ich dann auch selber hin.
Soll das für alle Überschriften oder nur für einzelne so sein?
Soll der Rahmen über die ganze Textbreite oder nur über die Breite der Überschrift gehen (nach dem Bild vermutlich letzteres)?
Wie soll das bei mehrzeiligen Überschriften sein?
Muss es mit article und titlesec sein oder darf es auch ein anderes Paket wie sectsty sein oder kann man auch gleich eine Klasse verwenden, die selbst die Änderung der Überschriftenformatierung unterstützt?

Eine persönliche Bemerkung sei mir erlaubt: Solche Trauerränder finde ich eher hässlich. Außerdem sollte man darauf achten, dass die nicht zu dicht am Text anliegen, sonst beeinflusst es auch noch die Lesbarkeit. Man sollte bei Design ja auch etwas Rücksicht auf Menschen mit diversen Sehfehlern nehmen. Ganz besonders hässlich wird es außerdem, wenn die Abstände wie in deinem Beispiel ungleichmäßig sind (vor der ersten 1 ist kleiner als nach der zweiten 1, bei der zweiten Überschrift ist das noch viel krasser).

von Caput_12 » So 24. Mär 2019, 01:03

Weil ich leider alles in einem Dokument gemacht habe, zwischendurch nicht gespeichert habe und zur Reproduktion die entsprechenden Threads wiederfinden müsste, aus denen ich zusammenkopiert habe 🙈 Da würde ich nen halben Tag dran sitzen, um das zu reproduzieren 😅

Edit: Kann als Minimalbeispiel ja zumindest meinen aktuellen Code bereitstellen
\documentclass[a4paper]{article}

\usepackage{titlesec}
\usepackage{mdframed}
\usepackage{lipsum}

\begin{document}

\section{Section 1}

\lipsum[1]

\section{Section 2}

\lipsum[2]

\end{document}
Edit2: Die mdframed-Lösung bekomme ich auch noch reproduziert
\begin{mdframed}
\section{Section 1}
\end{mdframed}

von Bartman » So 24. Mär 2019, 00:40

Warum zeigst Du nicht an einem Beispiel, was Du bisher erreicht hast und was nicht?

Text genau umschließende Boxen um Überschriften

von Caput_12 » So 24. Mär 2019, 00:09

Hi,

ich versuche, meine Überschriften einzurahmen. Probiert habe ich das bislang mit a) mdframed und b)fbox in Verbindung mit titlesec, aber a) liegt einfach nicht eng an und b) lässt sich gar nicht erst umsetzen, da titlesec nur diese normalen Befehle ohne {} akzeptiert.
Als dritte Variante habe ich auch probiert, mit /newcommand einen zweiten section-Befehl zu erstellen, wieder mit fbox. Hier war das Problem jedoch, dass die Box erst hinter der Sectionzahl anfing.

Ein kleines Beispiel, wie es aussehen soll:

Bild

In der endgültigen Version soll chapter dann dreifach umrahmt, section zweifach und subsection einfach umrahmt sein. Aber das bekomme ich dann auch selber hin.

Beste Grüße
Caput
Dateianhänge
Beispiel.PNG
Beispiel.PNG (97.37 KiB) 3987 mal betrachtet

Nach oben