PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dieses Kapitel-Layout mit titlesec möglich?



casualcoder
02-08-2013, 17:58
Hallo,

ich möchte dieses Layout (http://abload.de/img/ziel_ergebnispduvy.png) mit XelateX umsetzen.

Problematisch finde ich die horizontale Linie über die komplette Seitenbreite auf Höhe der Basislinie ("Chapter") mit der Unterbrechung.
Momentan sieht mein Versuch mit Package titlesec noch so (http://abload.de/img/erstskizzeunul6.jpg) aus.

Neben dem Linienproblem stört mich noch der Bug, dass das erste Wort der Kapitelüberschrift ("A Chapter Title") beim Übersetzen unterschlagen wird.

Keine Idee wieso. Mein aktueller Stand:

%!TEX TS-program = xelatex
%!TEX encoding = UTF-8
\documentclass[
DIV11,
fontsize=11pt,
paper=a4
]{scrbook}

\usepackage{xcolor}
\usepackage{xltxtra,parskip}

\usepackage{polyglossia}
\setmainlanguage{english}

\usepackage{blindtext}

\defaultfontfeatures{Mapping=tex-text}
\setmainfont{Minion Pro}

\usepackage{titlesec}
\titleformat{\chapter}[display]
{\bfseries\Huge}{{\fontsize{14}{}\fontspec{Myriad Pro}\chaptertitlename}\,{\fontsize{76}{}\fontspec{ Myriad Pro}\textcolor{gray}\thechapter}}{-24pt}{{\noindent\rule{\paperwidth}{1.3pt}}\vspace{ 2ex}}

\titlespacing*{\chapter}{0pt}{0pt}{12pt}[0pt]

\setkomafont{chapter}{\normalfont\Huge\selectfont\ bfseries\rmfamily}
\setkomafont{section}{\normalfont\Large\selectfont \bfseries\rmfamily}

\begin{document}

\chapter{A Chapter Title}
\begin{addmargin}[6em]{0em}
\textit{%
\blindtext[1]%
}
\end{addmargin}

\section{A Section Title}
\blindtext[1]
\end{document}

Weiß jemand, wie ich eine horizontale Linie über die Seitenbreite erreiche?
\noindent\rule{\paperwidth}{1.3pt} scheint nicht ganz zu funktionieren...

Kann ich das mit titlesec machen oder benötige ich etwas anderes?
Vielen Dank für eure Tips!

Stefan_K
02-08-2013, 18:23
Das geht mit titlesec. Das A verschwindet, weil die Linie zu breit ist. Dann sieht man das "A" nicht mehr und danach kommt der Umbruch, weshalb "Chapter Title" zu sehen ist.

Sorge für einen Umbruch und negativen Raum vor der Linie, etwa wie


\hspace{-\leftmargin}\noindent\rule{\paperwidth}{1.3pt}\\

und setze für -\leftmargin etwas passendes bzw. errechnetes ein.

Stefan

hakaze
02-08-2013, 19:01
Ich habe einen ähnlichen Ansatz wie Stefan gewählt:
\titleformat{\chapter}[display]%
{\bfseries\Huge}%
{{\fontspec[Scale=MatchUppercase]{Myriad Pro}\bfseries\chaptertitlename}\,{\fontspec[Scale=3,Color=gray]{Myriad Pro}\thechapter}}%
{0pt}%
{\makebox[\linewidth]{\rule{1.2\paperwidth}{1.3pt}}\\[2ex]}Ich nehme eine makebox, die quasi über dem Text schwebt. Da der Satzspiegel nicht zentriert ist (die makebox allerdings schon), habe ich die Länge auf 1.2\paperwidth vergrößert.

Beachte auch meine Vorschläge für die Verwendung von fontspec (http://texdoc.net/pkg/fontspec)! Außerdem solltest du parskip als Paket rausnehmen und stattdessen die gleichnamige Option der KOMA-Script-Klasse (http://texdoc.net/pkg/scrguide) verwenden.

casualcoder
02-08-2013, 20:24
Danke ihr beiden! :)
Das sieht doch schon sehr gut aus, gerade der makebox-Ansatz wo ich links nicht mit negativen "Einzügen" hantieren muss, sehr schön!

Wenn eine makebox "über dem Text schwebt", kann ich sie auch "hinter den Text" legen? Wenn es möglich wäre, sie auf die Basislinie zu legen, erhält man dann vielleicht die "Unterbrechung" wie in der Skizze? :confused:

klops
03-08-2013, 11:31
Dafür benötigt man übrigens kein titlesec. Das geht einfach mit KOMA-Script-Mitteln:

\documentclass[headings=chapterprefix]{scrbook}
\usepackage{blindtext}
\usepackage{xcolor}

\setkomafont{chapterprefix}{\normalsize\sffamily\b fseries}
\addtokomafont{chapter}{\rmfamily\bfseries}
\renewcommand*{\chapterformat}{%
\makebox[0pt][l]{%
\hspace*{-\dimexpr\oddsidemargin+1in\relax}%
\rule[1pt]{\paperwidth}{1pt}%
}%
\colorbox{white}{\strut\chapapp\nobreakspace\Huge\ textcolor{gray}{\thechapter}}%
}

\begin{document}
\blinddocument
\end{document}

Die verwendete Option headings=chapterprefix und die Anweisungen \setkomafont, \addtokomafont, \chapterformat und \addchap sind in der KOMA-Script-Anleitung (http://mirrors.ctan.org/macros/latex/contrib/koma-script/doc/scrguide.pdf) beschrieben. \colorbox und \textcolor sind in der Anleitung zu xcolor (http://www.ctan.org/pkg/xcolor) dokumentiert. \makebox ist beispielsweise im usrguide (http://www.ctan.org/pkg/usrguide) mit allen verwendeten Optionen zu finden.

Ich habe das im Beispiel mal ohne spezielle Fonts gemacht. Aber natürlich kannst Du auch die Fonts entsprechend ändern.

casualcoder
04-08-2013, 09:11
Danke, klops, funktioniert! :)

Das
\setkomafont{chapterprefix}{\fontsize{14}{}\fontsp ec[Numbers=Proportional,Scale=MatchUppercase]{Myriad Pro}}
\addtokomafont{chapter}{\rmfamily\bfseries}
\renewcommand*{\chapterformat}{%
\makebox[0pt][l]{%
\hspace*{-\dimexpr\oddsidemargin+1in\relax}%
\rule[1pt]{\paperwidth}{1.3pt}%
}%
\colorbox{white}{\strut\chapapp\nobreakspace\Huge{ \fontspec[Scale=3,Color=gray]{Myriad Pro}\thechapter}}%
}


sieht bereits beinahe wie gewünscht aus!

Ich würde gern diese hspace*-Zeile besser verstehen mit den TeX-Primitiven \dimexpr und \relax drin.

In der Ausgabe von oben (http://abload.de/img/skizzeyj1j.png) erhalte ich einen kleinen Abstand, den ich eliminieren möchte.
Kann ich dazu die Lücke, die l1 und l2 bestimmt geringfügig nach links verschieben?

Danke für deine Hilfe!

rais
04-08-2013, 10:56
Moin moin,


Ich würde gern diese hspace*-Zeile besser verstehen mit den TeX-Primitiven \dimexpr und \relax drin.

\dimexpr gehört zu den Erweiterungen von E-TeX, siehe `texdoc etex_man', Abschnitt `Expressions'.
Analog dazu wäre hier in etwa


\newlength\foo %vorm \renewcommand*
%..
\setlength\foo{\oddsidemargin}%
\addtolength\foo{1in}%
\hspace*{-\foo}%



In der Ausgabe von oben (http://abload.de/img/skizzeyj1j.png) erhalte ich einen kleinen Abstand, den ich eliminieren möchte.
Kann ich dazu die Lücke, die l1 und l2 bestimmt geringfügig nach links verschieben?

Die Lückenbreite kannst Du über die Länge \fboxsep beeinflussen:


\setlength\fboxsep{0pt}%
\colorbox{white}{...}%

Alternativ könntest Du, statt eine durchgezogene Linie mit einer weißen Box auszusparen, zwei Linien setzen, etwa:


\renewcommand*\chapterformat{%
\makebox[0pt][r]{\rule{0.5\linewidth}{1.3pt}}%
\mbox{\chapappifchapterprefix{\nobreakspace}%
\fontspec[Scale=3,Color=gray]{Myriad Pro}\thechapter\autodot}%
\makebox[0pt][l]{\rule{1.5\linewidth}{1.3pt}}\relax
}

MfG

klops
04-08-2013, 12:27
@casualcoder: Du solltest Code als Code und nicht als Zitat einfügen, weil man ihn sonst bei Antworten nicht einfach mit zitieren kann und der Umbruch möglicherweise fehlerhaft wird. Jedenfalls:



\colorbox{white}{\strut\chapapp\nobreakspace\Huge{ \fontspec[Scale=3,Color=gray]{Myriad Pro}\thechapter}}%
(Falsche Zitatumgebung durch korrekte Code-Umgebung von mir ersetzt.)
Hier hast Du nach "\Huge{" ein Leerzeichen eingebaut. Dabei spielt es keine Rolle, ob es ein Leerzeichen oder in Wirklichkeit ein Zeilenumbruch ist, es ist ein unerwünschtes Leerzeichen (http://www.komascript.de/signifikanteLeerzeichen). Die Klammern sind an der Stelle aber ohnehin wenig sinnvoll, da \Huge kein Befehl mit Argument ist. Das ist ein Umschalter! In meinem Beispiel findest Du diese Klammern daher auch nicht und damit entfällt auch automatisch das Leerzeichen. Wenn Du also Fehler einbaust, solltest Du selbst wieder mit dem Originalcode vergleichen, den man Dir gegeben hat, der den Fehler nicht aufweist.

casualcoder
04-08-2013, 12:47
Vielen Dank für die tollen Anregungen. :)

@klops: Ich achte besser darauf.

@rais: Sieht im Testdokument für Chapter 1 und 2 gut aus.
Kann ich (wäre "nice to have") den rotmarkierten Abstand links von "Chapter" vergleichbar der Länge der rechten roten Linie (http://abload.de/img/left-marginpry24.png) definieren, damit für ein kleiner Leerraum vor dem "C" entsteht? Momentan geht die Linie optisch in das "C" über.


%!TEX TS-program = xelatex
%!TEX encoding = UTF-8
\documentclass[
DIV11,
fontsize=11pt,
headings=chapterprefix,
paper=a4,
parskip=full
]{scrbook}

\usepackage{xcolor}
\usepackage{xltxtra}

\usepackage{polyglossia}
\setmainlanguage{english}

\usepackage{blindtext}

\defaultfontfeatures{Mapping=tex-text}
\setmainfont[Ligatures=Common,Numbers=OldStyle]{Minion Pro}

%% Überschriften ----------------------------------------------
\setkomafont{chapterprefix}{\fontsize{14}{}\fontsp ec[Numbers=Proportional,Scale=MatchUppercase]{Myriad Pro}}
\addtokomafont{chapter}{\rmfamily\bfseries}
\renewcommand*\chapterformat{%
\makebox[0pt][r]{\rule{0.5\linewidth}{1.3pt}}%
\mbox{\chapappifchapterprefix{\nobreakspace}%
\fontspec[Scale=5,Color=gray]{Myriad Pro}\thechapter\autodot}%
\makebox[0pt][l]{\rule{1.5\linewidth}{1.3pt}}\relax
}
%% ..Sections..
\setkomafont{section}{\normalfont\Large\selectfont \bfseries\rmfamily}

\begin{document}

\chapter{Foobar}
\blindtext[1]

\section{A Section Title}
\blindtext[1]

\section{Second Section Title}
\blindtext[1]

\blindtext[1]

\blindtext[1]

\chapter{Barfoo}
\blindtext[1]

\section{Another Section Title}
\blindtext[1]

\end{document}

klops
04-08-2013, 13:58
In Deinem Beispiel sind schon wieder falsche Leerzeichen (z. B. "\fontsp ec"). Außerdem darf das zweite Argument von \fontsize nicht leer sein. Würdest Du bitte ein wirklich funktionierendes vollständiges Minimalbeispiel (http://www.mrunix.de/forums/showthread.php?t=66921) erstellen. Dann kann man auch vernünftig darüber reden. Wobei Du vermutlich nur an der hier rot markierten Stelle
\makebox[0pt][r]{\rule{0.5\linewidth}{1.3pt}\hskip 1em}%

den gewünschten Abstand einfügen musst. Der Abstand hinter der Nummer ist hingegen Teil der Ziffer, wenn Du den aber auch den kann man mit einem `\hskip` oder `\kern` nach der Zahl ändern.

Übrigens ist die Verwendung von \chapappifchapterprefix in dem Fall IMO eher wenig sinnvoll. Das Ergebnis ohne Option headings=chapterprefix ist ohnehin unbrauchbar. Also kann man sich das Leben erleichtern, indem man stattdessen direkt wie in meinem Beispiel \chapapp verwendet.

Bei meinem Basiscode ist das min. so einfach:
%!TEX TS-program = xelatex
%!TEX encoding = UTF-8
\documentclass[
DIV11,
fontsize=11pt,
headings=chapterprefix,
paper=a4,
parskip=full
]{scrbook}

\usepackage{xcolor}
\usepackage{xltxtra}

\usepackage{polyglossia}
\setmainlanguage{english}

\usepackage{blindtext}

\defaultfontfeatures{Mapping=tex-text}
\setmainfont[Ligatures=Common,Numbers=OldStyle]{Minion Pro}

%% Überschriften ----------------------------------------------
\setkomafont{chapterprefix}{\fontsize{14}{14}%
\fontspec[Numbers=Proportional,Scale=MatchUppercase]{Myriad Pro}}
\addtokomafont{chapter}{\rmfamily\bfseries}
\renewcommand*{\chapterformat}{%
\makebox[0pt][l]{%
\hspace*{-\dimexpr\oddsidemargin+1in\relax}%
\rule[1pt]{\paperwidth}{1pt}%
}%
\setlength{\fboxsep}{.1em}% Das ist der Abstand davor und danach
\kern-\fboxsep% Damit der Abstand von der Linie abgezogen wird und nicht das
% "Chapter" nach rechts rückt.
\colorbox{white}{\strut\chapapp\enskip
\fontspec[Scale=5,Color=gray]{Myriad Pro}\thechapter%\autodot Ich glaube
% nicht, dass Du \autodot hier wirklich haben willst.
}%
}
%% ..Sections..
\setkomafont{section}{\normalfont\Large\bfseries\r mfamily}

\begin{document}

\blinddocument
\blinddocument

\end{document}
Dabei ragt die Linie auch nicht über die Seite hinaus, obwohl man das bei Bedarf natürlich auch erreichen kann. Problem bei über den Rand hinausragenden Linien kann beim Druck eines Buches sein, dass sie tatsächlich gedruckt werden. Buchseiten werden nämlich zusammen mit anderen auf großen Bögen eingerichtet. Wird dabei keine passende Bleedbox eingestellt, kann das Drucken über den Rand hinaus auf anderen Seiten zu sehen sein, wenn es nur weit genug über den Rand hinaus reicht. Deshalb sollte man besser nicht beliebig weit über den Rand hinaus zeichnen, sondern allenfalls ein paar mm. Was ein PDF-Viewer beim Drucken anstellen, wenn man sehr weit über den Rand hinaus druckt, hängt vermutlich vom Viewer und den Druckeinstellungen ab.

rais
04-08-2013, 17:22
Übrigens ist die Verwendung von \chapappifchapterprefix in dem Fall IMO eher wenig sinnvoll. Das Ergebnis ohne Option headings=chapterprefix ist ohnehin unbrauchbar. Also kann man sich das Leben erleichtern, indem man stattdessen direkt wie in meinem Beispiel \chapapp verwendet.

ah, danke für die Korrektur -- \chapappifchapterprefix war ein Überbleibsel aus der Originaldefinition von \chapterformat (wie der \autodot auch) -- danke auch für den Hinweis auf `Drucken über den Rand hinaus' ... meiner einer lernt halt nie aus;-)

MfG

casualcoder
04-08-2013, 22:46
Danke, klops, so ist es perfekt! :cool:

Sehr merkwürdig mit dem Kopieren, hab nochmal nachgesehen, in TeXnicCenter sieht das ganz korrekt aus.
Weiß echt nicht wo die Leerzeichen herkommen... :confused:

Wirklich schön so, ich versuche jetzt mal anhand der Kommentare die Details selber nachzuvollziehen... so gut ich kann, heißt das.