Continuando com esta pergunta:personalizar subsubseção com script koma
Como faço para centralizar os títulos?
\renewcommand{\sectionlinesformat}[4]{%
%\@tempswafalse
\ifstr{#1}{section}{%
\mbox{\@hangfrom{\underline{{#3}{#4}\adforn{12}}}}
}
{\ifstr{#1}{subsection}{%
\mbox{\@hangfrom{\underline{{#3}{#4}\adforn{24}}}}%
}
{\@hangfrom{\hskip#2#3}{#4}}}%
E aqui está o MWE:
\documentclass{scrartcl}
\usepackage{fontspec,adforn}
\makeatletter
\renewcommand{\sectionlinesformat}[4]{%
%\@tempswafalse
\ifstr{#1}{section}{%
\mbox{\@hangfrom{\underline{{#3}{#4}\adforn{12}}}}
}
{\ifstr{#1}{subsection}{%
\mbox{\@hangfrom{\underline{{#3}{#4}\adforn{24}}}}%
}
{\@hangfrom{\hskip#2#3}{#4}}}%
}\makeatother
\begin{document}
\part{ABC}
\section{abc}
\subsection{def}
\end{document}
Quero centralizar o título da seção e o título da subseção.
Responder1
Você pode simplesmente adicionar \centering
seu código alterado:
\documentclass{scrartcl}
\usepackage{fontspec,adforn}
\makeatletter
\renewcommand{\sectionlinesformat}[4]{%
%\@tempswafalse
\ifstr{#1}{section}{%
\centering\mbox{\@hangfrom{\underline{{#3}{#4}\adforn{12}}}}
}
{\ifstr{#1}{subsection}{%
\centering\mbox{\@hangfrom{\underline{{#3}{#4}\adforn{24}}}}%
}
{\@hangfrom{\hskip#2#3}{#4}}}%
}\makeatother
\begin{document}
\part{ABC}
\section{abc}
\subsection{def}
\end{document}
com o resultado:
Mas, para ser sincero, por que você altera o formato interno do KOMA-Script? Essa não é uma ideia muito boa. Melhor é o seguinte (e omita o sublinhado nos títulos, use negrito ou itálico):
\documentclass{scrartcl}
\usepackage{fontspec,adforn}
\begin{document}
\addtokomafont{section}{\centering} % <==============================
\addtokomafont{subsection}{\centering} % <==============================
\part{ABC}
\section{abc test test test test test test test test test test test test
test test test test test test test test test test test test test test
test test test test test test \adforn{12}} % <========================
\subsection{def \adforn{24}} % <========================================
\end{document}
com o resultado:
Desta forma, a centralização também funciona para títulos de seções longas; na primeira variante, pode não funcionar!
Responder2
Você pode redefinir \raggedsection
para alterar o alinhamento de todos os títulos definidos por \sectionlinesformat
.
O sublinhado só é possível para títulos de uma linha. Então você pode remover \@hangfrom
para eles.
\documentclass{scrartcl}
\usepackage{fontspec}
\usepackage{adforn}
\renewcommand\raggedsection{\centering}% center headings like \section, \subsection etc.
\let\originalsectionlinesformat\sectionlinesformat
\renewcommand{\sectionlinesformat}[4]{%
\ifstr{#1}{section}{\hskip#2\underline{#3#4\adforn{12}}}%
{\ifstr{#1}{subsection}{\hskip#2\underline{#3#4\adforn{24}}}
{\originalsectionlinesformat{#1}{#2}{#3}{#4}}}}%
\usepackage{blindtext}% only for dummy text
\begin{document}
\section{abc}
\blindtext
\subsection{def}
\blindtext
\end{document}
Resultado:
Se também houver títulos mais longos, remova o sublinhado (feio).
\documentclass{scrartcl}
\usepackage{fontspec}
\usepackage{adforn}
\renewcommand\raggedsection{\centering}
\let\originalsectionlinesformat\sectionlinesformat
\renewcommand{\sectionlinesformat}[4]{%
\originalsectionlinesformat{#1}{#2}{#3}{#4%
\ifstr{#1}{section}{\adforn{12}}
{\ifstr{#1}{subsection}{\adforn{24}}{}}%
}%
}
\usepackage{blindtext}% only for dummy text
\begin{document}
\section{abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc abc}
\blindtext
\subsection{def}
\blindtext
\end{document}
Resultado: