1

i try to have a blue line under every subsection in a document. I did it with the following command:

\titleformat{\subsection}
{\normalfont\Large\bfseries}
{\thesubsection}
{0.5em}
{#1}
[\titleline{\color{blue!65}\titlerule[2.5pt]}]

However, if there is something next to a subsection, like a wrapfigure, Latex doesn't detect it and my blue line overwrite the picture. Any idea how to get ride of this problem ? Thank you.

Complete code:

\documentclass[french]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{graphicx}
\usepackage{geometry}
\usepackage{tikz}
\usepackage{xcolor}
\usepackage{wrapfig}
\usepackage[justification=centering]{caption}
\usepackage[explicit]{titlesec}


\titleformat{\subsection}
  {\normalfont\Large\bfseries}
  {\thesubsection}
  {0.5em}
  {#1}
  [\titleline{\color{blue!65}\titlerule[2.5pt]}]

\begin{document}

\subsection{Controller Node}

\begin{wrapfigure}[21]{r}{.6\textwidth}
  \centering
  \includegraphics[width=.6\textwidth]{OpenStackNodes}
  \caption{Four-Node architecture}
  \label{fig:4nodes}
\end{wrapfigure}

Le noeud contrôleur héberge le service d’identité, le service d’image, la partie management de compute et du réseau, plusieurs agents réseau, et le dashboard. Il inclut également les services support comme une base de données SQL, la file de message, et NTP (Network Time Protocol, methode pour maintenir une horloge juste en communiquant avec une source précise).

En option, le noeud contrôleur peut faire tourner des parties de services de stockage par blocs, de stockage d'objets, d’orchestration et de télémétrie.


\subsection{Compute Node}

Le noeud compute exécute la partie hyperviseur de compute qui fait fonctionner les instances. par défaut, compute utilise l’hyperviseur KVM. Le noeud compute héberge également un agent du service réseau qui connecte les instances aux réseaux virtuels et fournit des services de firewalling aux instances via les groupes de sécurité.

Il est possible de déployer plus d’un noeud compute. Chaque noeud nécessite au     minimum deux interfaces réseau.

\end{document}

Output:Output

Nakrule
  • 741
  • Based on the answer of David you have to help wrapfig Maybe with a \vspace* or \clearpage http://tex.stackexchange.com/questions/120926/prevent-wrapfigure-from-wrapping-the-next-section – Marco Daniel Mar 22 '17 at 21:12

2 Answers2

3

Restrict the length of the title rule to \linewidth.

\titleformat{\subsection}
  {\normalfont\Large\bfseries}
  {\thesubsection}
  {0.5em}
  {#1}
  [\titleline{\color{blue!65}\makebox[\linewidth]{\titlerule[2.5pt]}}]
%                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

enter image description here

\documentclass[french]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{graphicx}
\usepackage{geometry}
\usepackage{tikz}
\usepackage{xcolor}
\usepackage{wrapfig}
\usepackage[justification=centering]{caption}
\usepackage[explicit]{titlesec}


\titleformat{\subsection}
  {\normalfont\Large\bfseries}
  {\thesubsection}
  {0.5em}
  {#1}
  [\titleline{\color{blue!65}\makebox[\linewidth]{\titlerule[2.5pt]}}]

\begin{document}

\subsection{Controller Node}

\begin{wrapfigure}[21]{r}{.6\textwidth}
  \centering
  \includegraphics[width=.6\textwidth,height=19\baselineskip]{example-image}
  \caption{Four-Node architecture}
  \label{fig:4nodes}
\end{wrapfigure}

Le noeud contrôleur héberge le service d’identité, le service d’image, la partie management de compute et du réseau, plusieurs agents réseau, et le dashboard. Il inclut également les services support comme une base de données SQL, la file de message, et NTP (Network Time Protocol, methode pour maintenir une horloge juste en communiquant avec une source précise).

En option, le noeud contrôleur peut faire tourner des parties de services de stockage par blocs, de stockage d'objets, d’orchestration et de télémétrie.


\subsection{Compute Node}

Le noeud compute exécute la partie hyperviseur de compute qui fait fonctionner les instances. par défaut, compute utilise l’hyperviseur KVM. Le noeud compute héberge également un agent du service réseau qui connecte les instances aux réseaux virtuels et fournit des services de firewalling aux instances via les groupes de sécurité.

Il est possible de déployer plus d’un noeud compute. Chaque noeud nécessite au     minimum deux interfaces réseau.

\end{document}
gernot
  • 49,614
0

I found a solution, maybe not the best as i manually have to set the titlerule length everytime i have the situation, but it's better than nothing.

\documentclass[french]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{graphicx}
\usepackage{geometry}
\usepackage{tikz}
\usepackage{xcolor}
\usepackage{wrapfig}
\usepackage[justification=centering]{caption}
\usepackage[explicit]{titlesec}


\titleformat{\subsection}
  {\normalfont\Large\bfseries}
  {\thesubsection}
  {0.5em}
  {#1}
  [\titleline{\color{blue!65}\titlerule[2.5pt]}]

\begin{document}

\subsection{Controller Node}

\begin{wrapfigure}[21]{r}{.6\textwidth}
  \centering
  \includegraphics[width=.6\textwidth]{OpenStackNodes}
  \caption{Four-Node architecture}
  \label{fig:4nodes}
\end{wrapfigure}

Le noeud contrôleur héberge le service d’identité, le service d’image, la partie management de compute et du réseau, plusieurs agents réseau, et le dashboard. Il inclut également les services support comme une base de données SQL, la file de message, et NTP (Network Time Protocol, methode pour maintenir une horloge juste en communiquant avec une source précise).

En option, le noeud contrôleur peut faire tourner des parties de services de stockage par blocs, de stockage d'objets, d’orchestration et de télémétrie.


\let\oldtitleline\titleline
\renewcommand{\titleline}{\oldtitleline*}
\setlength{\titlewidth}{.38\textwidth}
\subsection{Compute Node}
\label{sub:compute_node}
\setlength{\titlewidth}{\textwidth}

Le noeud compute exécute la partie hyperviseur de compute qui fait fonctionner les instances. par défaut, compute utilise l’hyperviseur KVM. Le noeud compute héberge également un agent du service réseau qui connecte les instances aux réseaux virtuels et fournit des services de firewalling aux instances via les groupes de sécurité.

Il est possible de déployer plus d’un noeud compute. Chaque noeud nécessite au     minimum deux interfaces réseau.

\end{document}
Nakrule
  • 741