pCloud Premium

Interdire un saut de page

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.
Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Interdire un saut de page

Messagepar BenLar » Mercredi 29 Avril 2020, 14:02

Bonjour,

Dans mon préambule, je créé la commande
Code: Tout sélectionner
\newcommand{\Divers}[2]{\textbf{#1}#2}

Le problème que je rencontre est que parfois un saut de page s'insère entre le contenu de #1 et de #2.
Par exemple, je peux rencontrer un résultat de \Divers{Remarque}{bla bla} avec Remarque sur une page et bla bla sur la suivante.
J'ai essayé d'insérer un \nopagebreakentre {#1} et #2 mais c'est sans effet et je ne trouve pas de solution qui fonctionne en cherchant à droite et à gauche.

Pourriez-vous m'aider ? Merci.
Ben
BenLar
Déca-utilisateur
 
Messages: 16
Inscription: Mercredi 29 Avril 2020, 13:56

Publicité

Re: Interdire un saut de page

Messagepar gigiair » Mercredi 29 Avril 2020, 14:47

Il suffit d'insérer le contenu de la macro dans une minipage. Voir la documentation.

Exemple minimal
Code: Tout sélectionner
\documentclass[latin]{article}
\usepackage{lipsum}
\usepackage{babel}

\begin{document}

\lipsum[1-4]


\noindent
\begin{minipage}[t]{1.0\linewidth}
  \setlength{\parindent}{1pc}
  \begin{center}
    Bloc insécable :
  \end{center}

  \lipsum[1]
\end{minipage}

\begin{center}
  Fin Minipage
\end{center}

\lipsum[2]

\end{document}

% Local Variables:
% TeX-PDF-mode: t
% TeX-PDF-from-DVI: nil
% End:
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2509
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: Interdire un saut de page

Messagepar un bon petit » Mercredi 29 Avril 2020, 14:55

BenLar a écrit:J'ai essayé d'insérer un \nopagebreakentre {#1} et #2

Ce n'est pas \nopaghebreak qu'il faut ici, mais plutôt \nobreak car on est en mode horizontal entre #1 et #2.

gigiair a écrit:Il suffit d'insérer le contenu de la macro dans une minipage. Voir la documentation.

Dans une minipage ??? Donc une boite verticale ? :boxed:
C'est clairement une mauvaise idée : quelle valeur comptez-vous assigner à la largeur de cette boite verticale ? Même dans une \hbox, cela me semblerait problématique car si #2 est assez long, on est assuré de débordements dans la marge puisqu'une \hbox est insécable.
un bon petit
Giga-utilisateur
 
Messages: 780
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Interdire un saut de page

Messagepar BenLar » Mercredi 29 Avril 2020, 15:12

J'ai essayé ça

Code: Tout sélectionner
\newcommand{\Démonstration}[1]{
\textbf{Démonstration}\\
\nobreak
\begin{leftbar}
   #1
\end{leftbar}
}

\newcommand{\Divers}[2]{
\textbf{#1}\\
\nobreak
#2
\bigbreak
}


mais dans un cas comme dans l'autre, j'ai des cas avec Démonstration ou Remarque ou... sur une autre page.
BenLar
Déca-utilisateur
 
Messages: 16
Inscription: Mercredi 29 Avril 2020, 13:56

Re: Interdire un saut de page

Messagepar balf » Mercredi 29 Avril 2020, 16:31

Et en essayant (dans le préambule) \clubpenalty=10000 pour interdire les orphelines ?

B. A.
balf
Zetta-utilisateur
 
Messages: 3893
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: Interdire un saut de page

Messagepar marco56 » Mercredi 29 Avril 2020, 18:48

Un ECM, peut-être ?
marco56
Giga-utilisateur
 
Messages: 812
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Re: Interdire un saut de page

Messagepar BenLar » Vendredi 01 Mai 2020, 10:10

Bonjour,

Voilà mon préambule

Code: Tout sélectionner
\usepackage{subfiles}
\usepackage[french]{babel}
\usepackage{amsfonts,amsmath,amssymb,mathrsfs}
\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}
\usepackage{color,colortbl}
\usepackage[table]{xcolor}
\usepackage{tikz} %pour construire des cadres et des figures
\usetikzlibrary{shapes,arrows}
%\usepackage{pstricks}
%\usepackage{pstricks-add}
\usepackage{sectsty} %pour modifier les titres de section
\usepackage[top=2cm,bottom=2cm,left=2cm,right=2cm]{geometry} %réglage des marges
\usepackage{fancyhdr} %pour les pieds de page
\usepackage{lastpage} %pour l'affichage du nombre de pages
\usepackage{framed} % barre sur les côtés de démonstration & insertion de code
\usepackage{setspace}
\usepackage{eqnarray} %pour aligner les symbole = quand des équations se supperposent
\usepackage{tabularx}
\usepackage{tkz-tab} %Pour faire des tableaux de variation
\usepackage{graphicx} %Pour insérer des images
\usepackage{multicol} % pour avoir plusieurs colonnes localement
\usepackage{minted} % insertion de code python (ajouter l'option -shell-escape au compilateur et installer Pygments sous python)
\usepackage[linesnumbered, french, boxed]{algorithm2e} %pour insérer des algorithmes
\usepackage{enumitem} %pour personnaliser les listes


\setlength{\columnseprule}{0.25pt}
\setlength{\parskip}{2ex plus 1ex minus 1ex} %définit l'espace entre paragraphe valant 2 ex et y ajouter au maximum de 1 ex ou la diminuer au maximum de 1 ex.
\setlength{\parindent}{0pt} % suppression de l'indentation des paragraphe

%augmente l'interligne
\renewcommand{\baselinestretch}{1.2}

% haut et bas de page
\pagestyle{fancy}
\fancyhf{}
\fancyhead[C]{\leftmark}
\fancyfoot[C]{\thepage / \pageref{LastPage}}
\renewcommand{\footrulewidth}{0.4pt} % ligne de séparation des hauts et pieds de pages

\frenchbsetup{StandardItemLabels} % pour conserver les puces lors des énumérations

% Changement de la couleur des titres de section
\sectionfont{\color{red}{}}
\subsectionfont{\color{blue}{}}
\subsubsectionfont{\color{orange}{}}


% définition des symboles ensemblistes mathématiques ou autres
\newcommand{\R}{\ensuremath{\mathbb{R}}}
\newcommand{\N}{\ensuremath{\mathbb{N}}}
\newcommand{\D}{\ensuremath{\mathbb{D}}}
\newcommand{\Def}[1]{\ensuremath{\mathcal{D}}_{#1}}
\newcommand{\Cb}[1]{\ensuremath{\mathcal{C}}_{#1}}
\newcommand{\Z}{\ensuremath{\mathbb{Z}}}
\newcommand{\Q}{\ensuremath{\mathbb{Q}}}
\newcommand{\C}{\ensuremath{\mathbb{C}}}
\newcommand{\Aire}{\ensuremath{\mathcal{A}}}
\newcommand{\Vol}{\ensuremath{\mathcal{V}}}
\newcommand{\fn}[5]{
   \begin{center}   
      $\begin{array}{ccccc}
         #1 & : & #2 & \to & #3 \\
          & & #4 & \mapsto & #5 \\
      \end{array}$
   \end{center}
}

% mise en forme
\newcommand{\Cadre}[3]{
   \tikzstyle{mybox}=[draw=#2, fill=#2!5, very thick, rectangle, rounded corners, inner sep=10pt, inner ysep=15pt]
   \tikzstyle{fancytitle} =[draw=#2, fill=#2!20, very thick, rounded corners, text=black]
   \begin{tikzpicture}
      \node[mybox](box){
          \begin{minipage}{0.95\linewidth}
              #3
          \end{minipage}
      };
      \node[fancytitle, right=10pt] at (box.north west) {\textbf{#1}};
   \end{tikzpicture}
}

\newcommand{\Définition}[2]{\Cadre{#1}{orange}{#2}}

\newcommand{\Proposition}[2]{\Cadre{#1}{green}{#2}}

\newcommand{\Démonstration}[1]{
\textbf{Démonstration}
\begin{leftbar}
   #1
\end{leftbar}
}

\newcommand{\Divers}[2]{
\textbf{#1}
#2
}

%commande pour faciliter la saisie
\newcommand{\F}[2]{\dfrac{#1}{#2}} %pour les fraction
\newcommand{\RC}[1]{\sqrt{#1}} %pour les racines carrés
\newcommand{\V}[1]{\overrightarrow{#1}} %pour les vecteurs
\newcommand*{\Vv}[2]{
    \begin{pmatrix}
      #1\\
      #2
    \end{pmatrix}
}

\newcommand*{\determinant}[4]{
   \begin{tabular}{|c c|}
   #1 & #3 \\
   #2 & #4 \\
   \end{tabular}
}

\newcommand{\Base}{$(\V{i},\V{j})$ }
\newcommand{\Repere}{$(O;\V{i},\V{j})$ }


J'aimerais éviter le saut de ligne avant les puces en faisant un appel à la commande \Divers{Notations}Blabla}
2020-04-30_16h09_46.png
2020-04-30_16h09_46.png (9.11 Kio) Vu 204 fois


J'aimerais éviter le saut de page en faisant un appel à la commande \Divers{Remarque - Interprétation géométrique}{Blabla}
2020-04-30_16h10_22.png
2020-04-30_16h10_22.png (6.79 Kio) Vu 204 fois


J'aimerais éviter le saut de page en faisant un appel à la commande \Démonstration{Blabla}
2020-04-30_16h10_09.png
2020-04-30_16h10_09.png (9.41 Kio) Vu 204 fois


Je ne sais pas comment modifier mes commandes pour éviter ce type de problèmes.

J'espère être plus clair.

Bonne journée,

Ben
BenLar
Déca-utilisateur
 
Messages: 16
Inscription: Mercredi 29 Avril 2020, 13:56

Re: Interdire un saut de page

Messagepar marco56 » Vendredi 01 Mai 2020, 12:40

Un ECM, c'est un Exemple Complet Minimal : perso, la flemme d'aller compléter tout ce qui manque pour le faire tourner.
marco56
Giga-utilisateur
 
Messages: 812
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Re: Interdire un saut de page

Messagepar BenLar » Lundi 04 Mai 2020, 09:17

Bonjour,

Ci-joint, une partie des fichiers.

Ce qui me pose problème :
- Exemple sur la p.6 et la suite sur la p.7 ; ce serait à mon sens mieux que Exemple soit sur la p.7
- Même remarque avec Démonstration à la p.10
- par contre une démonstration (ou autre) sur deux pages n'est pas gênant p.4-5

J'ai essayé avec une minipage dans la définition de \Divers ou \Démonstration mais là, c'est la cata, car cela peut générer des espaces énormes entre les titres de section/sous-section et le contenu.

Bonne journée,

Ben
Fichiers joints
main.pdf
La version "compilée" en pdf
(67.01 Kio) Téléchargé 3 fois
Ensembles_de_Nombres.tex
Le premier chapitre
(16.43 Kio) Téléchargé 3 fois
Préambule.tex
Le préambule
(3.88 Kio) Téléchargé 5 fois
main.tex
Le fichier "racine"
(366 Octets) Téléchargé 3 fois
BenLar
Déca-utilisateur
 
Messages: 16
Inscription: Mercredi 29 Avril 2020, 13:56

Re: Interdire un saut de page

Messagepar BenLar » Jeudi 07 Mai 2020, 10:11

Bonjour,

Est-ce qu'un tel ECM convient ?

Code: Tout sélectionner
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}% ou \usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[french]{babel}
\usepackage{lipsum}
\usepackage{framed}
\listfiles
%
% Ajouter ici les éventuels modules supplémentaires.
%

\newcommand{\Démonstration}[1]{\textbf{Démonstration}
\begin{leftbar}
   #1
\end{leftbar}
}

\newcommand{\Divers}[2]{\textbf{#1}

#2}

\begin{document}

\Divers{Exemple}{\lipsum[1-5]}

\Divers{Exemple}{Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla }

\Divers{Exemple}{Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla}

\end{document}


Le problème provient des deux commandes \Divers et \Démonstration. Mais je n'ai pas encore assez d'expérience en latex pour savoir comment m'en sortir.

Espérant avancer...
BenLar
Déca-utilisateur
 
Messages: 16
Inscription: Mercredi 29 Avril 2020, 13:56

Re: Interdire un saut de page

Messagepar gigiair » Jeudi 07 Mai 2020, 11:35

Une séquence de contrôle définie par \newcommand ne peut pas contenir de caractères accentués. \newcommand\Définition produira une erreur à la compilation.
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2509
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: Interdire un saut de page

Messagepar un bon petit » Jeudi 07 Mai 2020, 13:32

gigiair a écrit:Une séquence de contrôle définie par \newcommand ne peut pas contenir de caractères accentués. \newcommand\Définition produira une erreur à la compilation.

Faux. Un caractère accentué peut tout à fait être dans le nom d'une macro, pour peu qu'il ait un catcode de 11.
Même si c'est possible, c'est une pratique bien évidemment fortement déconseillé.

Ce code compile parfaitement avec un moteur utf8 comme xelatex :
Code: Tout sélectionner
\documentclass{article}
\newcommand\démo{Bonjour}
\begin{document}
signification : \meaning\démo\par
exécution : \démo
\end{document}
un bon petit
Giga-utilisateur
 
Messages: 780
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Interdire un saut de page

Messagepar F. Pantigny » Jeudi 07 Mai 2020, 13:45

Pour la question de départ, je suggère de rajouter \par\nobreak

Code: Tout sélectionner
\documentclass[a4paper,10pt]{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[french]{babel}
\usepackage{lipsum}
\usepackage{framed}
\listfiles
%
% Ajouter ici les éventuels modules supplémentaires.
%

\newcommand{\Demonstration}[1]{\textbf{Démonstration}
\begin{leftbar}
   #1
\end{leftbar}
}

\newcommand{\Divers}[2]{\textbf{#1}\par\nobreak
#2}

\begin{document}

\Divers{Exemple}{\lipsum[1-5]}

\Divers{Exemple}{Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla }

\Divers{Exemple}{Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla}
\end{document}
F. Pantigny
Utilisateur
 
Messages: 3
Inscription: Dimanche 07 Juillet 2019, 13:37
Statut actuel: Actif et salarié | Enseignant

Re: Interdire un saut de page

Messagepar un bon petit » Jeudi 07 Mai 2020, 13:47

BenLar a écrit:Est-ce qu'un tel ECM convient ?

Oui, c'est bien mieux, mais il n'est pas Minimal puisque le package framed et la macro \Démonstration ne sont pas utiles.

La méthode classique est de mettre \nobreak après \par pour empêcher une coupure:
Code: Tout sélectionner
\documentclass[a4paper,french,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern,babel,lipsum}
\newcommand{\Divers}[2]{\textbf{#1}\par\nobreak#2}
\begin{document}
\Divers{Exemple}{\lipsum[1-5]}

\Divers{Exemple}{Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla }

\Divers{Exemple}{Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla}
\end{document}
un bon petit
Giga-utilisateur
 
Messages: 780
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Interdire un saut de page

Messagepar BenLar » Jeudi 07 Mai 2020, 13:56

un bon petit a écrit:Oui, c'est bien mieux, mais il n'est pas Minimal puisque le package framed et la macro \Démonstration ne sont pas utiles.


Je les ai mis car j'ai le même problème avec. J'ai juste pas ajouté l'exemple.
BenLar
Déca-utilisateur
 
Messages: 16
Inscription: Mercredi 29 Avril 2020, 13:56

Re: Interdire un saut de page

Messagepar BenLar » Jeudi 07 Mai 2020, 14:01

F. Pantigny a écrit:Pour la question de départ, je suggère de rajouter \par\nobreak


Effectivement, sur l'ECM, ça fonctionne bien. Pas sur mon fichier. :evil:
BenLar
Déca-utilisateur
 
Messages: 16
Inscription: Mercredi 29 Avril 2020, 13:56

Re: Interdire un saut de page

Messagepar BenLar » Jeudi 07 Mai 2020, 14:02

gigiair a écrit:Une séquence de contrôle définie par \newcommand ne peut pas contenir de caractères accentués. \newcommand\Définition produira une erreur à la compilation.


Jusqu'ici, ça compile. Mais il est vrai que c'est risqué. Il faudra que je prenne le temps de les enlever.
BenLar
Déca-utilisateur
 
Messages: 16
Inscription: Mercredi 29 Avril 2020, 13:56

Re: Interdire un saut de page

Messagepar BenLar » Jeudi 07 Mai 2020, 14:17

En fait, le \par\nobreak fonctionne bien dans mon document sauf quand il est suivie d'un
- \begin{center}... \end{center}
- \begin{itemize}... \end{itemize}

Cela explique peut-être aussi pourquoi je rencontre parfois le problème avec \Démonstration qui contient un \begin{leftbar}...\end{leftbar}

De plus, comment dois-je faire pour avoir un saut de ligne après le #2 ? Un \medbreak ou \bigbreak ?
BenLar
Déca-utilisateur
 
Messages: 16
Inscription: Mercredi 29 Avril 2020, 13:56

Re: Interdire un saut de page

Messagepar F. Pantigny » Jeudi 07 Mai 2020, 15:18

L'environnement {itemize} commence par insérer une pénalité favorisant la coupure. Or TeX peut effectuer une coupure sur une telle pénalité. On peut donc mettre avant l'environnement {itemize} n'importe quelle pénalité d'interdiction de coupure, TeX pourra toujours faire la coupure sur la pénalité insérée par {itemize}.

Il convient donc d'utiliser autre chose que {itemize} de base.
Heureusement, l'extension enumitem modifie {itemize} de base et possède un paramètre pour régler la pénalité insérée avant. Il convient de mettre [beginpenalty=10000]

Code: Tout sélectionner
\documentclass[a4paper,french,10pt]{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern,babel,lipsum}
\newcommand{\Divers}[2]{\textbf{#1}\par\nobreak#2}
\usepackage{enumitem}
\begin{document}
\Divers{Exemple}{\lipsum[1-5]}

\Divers{Exemple}{Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla }

\Divers{Exemple}{
\begin{itemize}[beginpenalty=10000]
\item un
\item deux
\item trois
\item quatre
\end{itemize}}
\end{document}
F. Pantigny
Utilisateur
 
Messages: 3
Inscription: Dimanche 07 Juillet 2019, 13:37
Statut actuel: Actif et salarié | Enseignant

Re: Interdire un saut de page

Messagepar BenLar » Jeudi 07 Mai 2020, 15:30

Effectivement, sur les environnement itemize ou j'ai le problème, ça fonctionne.
BenLar
Déca-utilisateur
 
Messages: 16
Inscription: Mercredi 29 Avril 2020, 13:56


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot] et 5 invités

pCloud Premium