Wiki Forum

Fichier .cls

Tout ce qui concerne l'utilisation (ou l'installation) de LaTeX.

Modérateur: Modérateurs_LaTeX

Règles du forum
Merci d'éviter le style SMS dans vos messages. Penser à utiliser les balises Code pour poster du code.
Penser à utiliser la fonction Recherche avant de poster un message.

Re: fichier .cls

Messagede pg le Jeudi 21 Mai 2009, 13:14

Dans le fichier cls, on peut mettre tout le préambule et les options du documentclass. Mettre tous les appels de packages peut être pratique (pas besoin de les taper à chaque document), mais a des inconvénients (la liste des packages utilisées n'est plus sous les yeux donc on peut oublier ce qui a été chargé ou pas). Le guide pour fabriquer des fichiers cls est le clsguide.

Dans sa forme la plus simple, le fichier cls va comporter une déclaration de qui il est :

Code: Tout sélectionner
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{cours}
              [2009/05/21 v1.0
Classe de cours personnelle]

puis va charger la classe book avec les options voulues :

Code: Tout sélectionner
\LoadClass[12pt,a4paper,fleqn]{book}

et enfin va comporter le code proprement dit puis se terminera par un \endinput. Cela va donner un fichier, nommé "cours.cls", qui contient les lignes suivantes :

Code: Tout sélectionner
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{cours}
              [2009/05/21 v1.0
Classe de cours personnelle]

\LoadClass[12pt,a4paper,fleqn]{book}

\RequirePackage[latin1]{inputenc}
\RequirePackage[T1]{fontenc}
\RequirePackage[frenchb]{babel}
\RequirePackage{lmodern}
\RequirePackage{eurosym}
\RequirePackage{geometry}
\RequirePackage{lastpage}
\RequirePackage{graphicx}
\RequirePackage{picins}
\RequirePackage{pifont}
\RequirePackage{eepic}
\RequirePackage{fancybox}
\RequirePackage{fancyhdr}
\RequirePackage{pst-all}
\RequirePackage{pst-eucl}
\RequirePackage{xcolor}
\RequirePackage{xlop}
\RequirePackage[autolanguage]{numprint}
\RequirePackage{calc}
\RequirePackage{ifthen}
\RequirePackage{latexsym}
\RequirePackage{amsfonts}
\RequirePackage{amsmath}
\RequirePackage{amssymb}
\RequirePackage{amsthm}
\RequirePackage{mathrsfs}
\RequirePackage{frcursive}
\RequirePackage{multirow}
\RequirePackage{multicol}
\RequirePackage{array}
\RequirePackage{tabularx}
\RequirePackage{colortab}
\frenchbsetup{ReduceListSpacing=false, CompactItemize=false,
StandardItemLabels=true}% pour empecher frenchb de perturber enumitem
\RequirePackage{enumitem}
\setitemize{nolistsep}
\setitemize[1]{label=\textbullet}
\RequirePackage{ulem}
\normalem

\newcommand{\colorulem}[1][black]{\bgroup
  \ifdim\ULdepth=\maxdimen\settodepth\ULdepth{(j}\advance\ULdepth.4pt\fi
  \markoverwith{\kern0em\vtop{\kern\ULdepth {\color{#1}\hrule height 1.4pt width .4em}}\kern0em}\ULon}

% Définitions du format de page
\geometry{margin=2cm}
\pagestyle{empty}

% definition des couleurs
\definecolor{bleu}{rgb}{0.4,0.2,1} \newrgbcolor{bleu}{0.4 0.2 1}
\definecolor{rouge}{rgb}{1,0,0} \newrgbcolor{rouge}{1 0 0}
\definecolor{vert}{rgb}{0.1,0.6,0} \newrgbcolor{vert}{0.1 0.6 0}
\definecolor{blanc}{rgb}{1,1,1} \newrgbcolor{blanc}{1 1 1}
\definecolor{noir}{rgb}{0,0,0} \newrgbcolor{noir}{0 0 0}
\definecolor{gris}{rgb}{0.5,0.5,0.5} \newrgbcolor{gris}{0.5 0.5 0.5}
\definecolor{grisclair}{rgb}{0.9,0.9,0.9} \newrgbcolor{grisclair}{0.9 0.9 0.9}
\definecolor{jorange}{rgb}{0.9,0.9,0} \newrgbcolor{jorange}{0.9 0.9 0}
%symbole attention danger
\newenvironment{danger}{\noindent\pstribox[shadow=true,trimode=*U]{\bfseries\rouge!}}{}

% mise en valeur forte
\newcommand*{\strong}[1]{{\color{rouge}\bfseries#1}}

% mise en page des propréités, remarques et exemples
\theoremstyle{definition}
\newtheorem*{exemple}{Exemple}
\newtheorem{exemplenumerote}{Exemple}[subsection]
\renewcommand{\theexemplenumerote}{\arabic{exemplenumerote}}
\newtheorem*{exemples}{Exemples}
\newenvironment{sousexemples}{\leavevmode\begin{itemize}}{\end{itemize}}
\newtheorem*{remarques}{Remarques}
\newenvironment{sousremarques}{\leavevmode\begin{itemize}}{\end{itemize}}
\newtheorem*{propriete}{Propriété}
\newtheorem*{consequence}{Conséquence}
\newenvironment{sousconsequence}{\leavevmode\begin{itemize}}{\end{itemize}}

% alignement multiple
\newenvironment{multialign*}{\[\renewcommand{\arraycolsep}{1.4pt}\begin{array}{lllllllllllll}}{\end{array}\]}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% personnalisation de la présentation --> ira dans le fichier .cls %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
                    \global\@topnum\z@
                    \@afterindentfalse
                    \secdef\@chapter\@schapter}

\def\@makechapterhead#1{%
  \begingroup
  \color{rouge}\fboxsep=10pt\fboxrule=1.4pt
  \noindent\fbox{\noindent\begin{minipage}{\textwidth-20pt}
  \parindent=0pt\centering\normalfont\normalcolor
  \LARGE
    \ifnum \c@secnumdepth >\m@ne
      \if@mainmatter
        \colorulem[rouge]{{\itshape\@chapapp\space \thechapter}~:}
      \fi
    \fi
    \interlinepenalty\@M
    \normalfont\normalcolor\bfseries#1\par\vspace*{1em}\end{minipage}}
    \endgroup
    \vskip 40pt
  }

\def\@makeschapterhead#1{%
  \begingroup
  \color{rouge}\fboxsep=5pt
  \noindent\fbox{\noindent\begin{minipage}{\textwidth-10pt}
  \parindent=0pt\centering\normalfont\normalcolor
  \LARGE
    \interlinepenalty\@M
    \normalfont\normalcolor\bfseries#1\par\vspace*{1em}\end{minipage}}
    \endgroup
    \vskip 40pt
}

\def\@sect#1#2#3#4#5#6[#7]#8{%
  \ifnum #2>\c@secnumdepth
    \let\@svsec\@empty
  \else
    \refstepcounter{#1}%
    \protected@edef\@svsec{\@seccntformat{#1}\relax}%
  \fi
  \@tempskipa #5\relax
  \ifdim \@tempskipa>\z@
    \begingroup
      #6{%
        \@hangfrom{\hskip #3\relax\@svsec}%
          \interlinepenalty \@M \colorulem[\currentsectioncolor]{\normalcolor#8\vphantom{p}}\@@par}%
    \endgroup
    \csname #1mark\endcsname{#7}%
    \addcontentsline{toc}{#1}{%
      \ifnum #2>\c@secnumdepth \else
        \protect\numberline{\csname the#1\endcsname}%
      \fi
      #7}%
  \else
    \def\@svsechd{%
      #6{\hskip #3\relax
      \@svsec #8}%
      \csname #1mark\endcsname{#7}%
      \addcontentsline{toc}{#1}{%
        \ifnum #2>\c@secnumdepth \else
          \protect\numberline{\csname the#1\endcsname}%
        \fi
        #7}}%
  \fi
  \@xsect{#5}}

\def\@ssect#1#2#3#4#5{%
  \@tempskipa #3\relax
  \ifdim \@tempskipa>\z@
    \begingroup
      #4{%
        \@hangfrom{\hskip #1}%
          \interlinepenalty \@M \colorulem[\currentsectioncolor]{\normalcolor#5\vphantom{p}}\@@par}%
    \endgroup
  \else
    \def\@svsechd{#4{\hskip #1\relax #5}}%
  \fi
  \@xsect{#3}}

\def\@xsect#1{%
  \@tempskipa #1\relax
  \ifdim \@tempskipa>\z@
    \par \nobreak
    \vskip \@tempskipa
    \@afterheading
  \else
    \@nobreakfalse
    \global\@noskipsectrue
    \everypar{%
      \if@noskipsec
        \global\@noskipsecfalse
       {\setbox\z@\lastbox}%
        \clubpenalty\@M
        \begingroup \@svsechd \endgroup
        \unskip
        \@tempskipa #1\relax
        \hskip -\@tempskipa
      \else
        \clubpenalty \@clubpenalty
        \everypar{}%
      \fi}%
  \fi
  \ignorespaces}

\setcounter{secnumdepth}{3}
\renewcommand{\thechapter}{T2}
\renewcommand{\thesection}{\Roman{section})}
\renewcommand{\thesubsection}{\arabic{subsection})}
\renewcommand{\thesubsubsection}{\alph{subsubsection})}

\def\@seccntformat#1{\csname the#1\endcsname\hskip0.3em}

\newcommand{\sectionindent}{0cm}
\newcommand{\subsectionindent}{0.5cm}
\newcommand{\subsubsectionindent}{1cm}

\renewcommand\section{%
\def\currentsectioncolor{rouge}
\def\currentsectionindent{\sectionindent}
\setindent{\currentsectionindent}
\@startsection{section}{1}
  {0cm}% indentation
  {-3.5ex \@plus -1ex \@minus -.2ex}% espace avant
  {2.3ex \@plus.2ex}% espace après
  {\normalfont\Large\bfseries}}

\renewcommand\subsection{%
\def\currentsectioncolor{bleu}
\def\currentsectionindent{\subsectionindent}
\setindent{\currentsectionindent}
\@startsection{subsection}{2}
  {0cm}% indentation
  {-3.25ex\@plus -1ex \@minus -.2ex}% espace avant
  {2.3ex \@plus.2ex}% espace après
  {\normalfont\large\bfseries}}

\renewcommand\subsubsection{%
\def\currentsectioncolor{vert}
\def\currentsectionindent{\subsubsectionindent}
\setindent{\currentsectionindent}
\@startsection{subsubsection}{3}
  {0cm}% indentation
  {-3.25ex\@plus -1ex \@minus -.2ex}% espace avant
  {2.3ex \@plus.2ex}% espace après
  {\normalfont\normalsize\bfseries}}

\let\originallinewidth\textwidth
\newcommand{\setindent}[1]{%
\linewidth=\originallinewidth
\leftmargin=0cm
\@totalleftmargin=0cm
\@setpar{\if@newlist
             \advance\par@deathcycles \@ne
             \ifnum \par@deathcycles >\@m
               \@noitemerr
               {\@@par}%
             \fi
           \else
             {\@@par}%
           \fi}%
\leftmargin=#1
\advance\linewidth -\leftmargin
\advance\@totalleftmargin\leftmargin
\parshape \@ne \@totalleftmargin \linewidth}

\endinput
%%
%% End of file `cours.cls'.

(J'ai renommé les \usepackage en \RequirePackage car c'est ce qui est recommandé pour les fichiers .cls ; voir le clsguide page 18)

Ensuite, il faut enlever le préambule du fichier .tex et modifier la classe de document en \documentclass{cours} ; cela donne :

Code: Tout sélectionner
\documentclass{cours}

\begin{document}

\chapter{Initiation au calcul littéral}

\section{Introduction}

Un calcul littéral est un calcul qui utilise les lettres. Il sert par exemple à :
\begin{itemize}
\item établir une formule~;
\item trouver un nombre inconnu~;
\item prouver un résultat.
\end{itemize}

\section{Expression \og en fonction de ... \fg}

Écrire un résultat en \og fonction de $x$ \fg, c'est trouver une expression où figure $x$.

\begin{exemplenumerote}
Si $AB=x+3$, la longueur $AB$ est donnée en fonction de $x$.
\end{exemplenumerote}

\begin{exemplenumerote}
J'ai choisi un nombre $x$, je l'ai multiplié par $5$ puis j'ai ajouté $3$. Résultat : $5\times x + 3$. Le résultat est exprimé en fonction de $x$.
\end{exemplenumerote}

\section{Simplification d'une expression littérale}

On peut simplifier une expression littérale en usant de \emph{conventions d'écriture} qui aboutissent à supprimer le signe $\times$, ou en \emph{réduisant} celle-ci qui conduit à rassembler les termes de même nature.

\subsection{Conventions d'écriture}

\subsubsection{Règle de suppression du signe $\times$}

\strong{Pour alléger l'écriture d'une expression littérale}, on peut supprimer le signe $\times$ devant une lettre ou une parenthèse.

\begin{remarques}
\begin{sousremarques}
    \item On ne supprime pas le signe $\times$ entre deux nombres.
    \item On commence par les nombres et ensuite les lettres dans un produit, ainsi on écrit $4x$ au lieu de $x4$ afin de ne pas confondre avec les puissances (voir point ci-dessous).
    \item $a\times a$ s'écrit $a^2$ plutôt que $aa$, $a\times a \times a$ s'écrit $a^3$ plutôt que $aaa$...
\end{sousremarques}
\end{remarques}

\subsubsection{Application et exemples}
\begin{itemize}
    \item $a\times b$ s'écrit de manière simplifiée $ab$,
    \item $A=5\times x + 7\times (3\times x + 2\times 4)$ peut s'écrire $A=5x+7(3x+2\times4)$
    \item $5\times x \times x \times x$ devient $5x^3$
\end{itemize}

\subsection{Réduction d'un produit}

\begin{itemize}
    \item $5x\times 3x$ se réduit (l'expression est plus courte) en $15x^2$,
    \item $-6y\times(-2y)$ se réduit en $12y^2$,
    \item il est important de remarquer que $1x$ c'est aussi $x$.
\end{itemize}
Dans la suite on verra comment réduire une somme.

\section{Distributivité}

Dans cette partie, on va développer des expressions littérales, c'est à dire récrire un \emph{produit} sous forme d'une \emph{somme}.

L'inverse qui consiste à transformer une \emph{somme} en un \emph{produit} s'appelle une factorisation.

\subsection{Propriété de distributivité simple}

\begin{propriete}
$k$, $a$ et $b$ désignent des nombres relatifs.
\[\pnode(0.1,-0.1){A}{\rouge k}(\pnode(0.1,-0.1){B}{a}+\pnode(0.1,-0.1){C}{b}\ncarc[linecolor=gray,arcangleA=-90,arcangleB=-60]{->}{A}{B}\ncarc[linecolor=gray,arcangleA=-90,arcangleB=-60]{->}{A}{C}) ={\rouge k}a+{\rouge k}b\]
\[\pnode(0.1,-0.1){A}{\rouge k}(\pnode(0.1,-0.1){B}{a}-\pnode(0.1,-0.1){C}{b}\ncarc[linecolor=gray,arcangleA=-90,arcangleB=-60]{->}{A}{B}\ncarc[linecolor=gray,arcangleA=-90,arcangleB=-60]{->}{A}{C}) = {\rouge k}a-{\rouge k}b\]
\end{propriete}

\subsubsection{Illustration géométrique}

$k$, $a$ et $b$ désignent des mesures de longueurs, ainsi pour l'illustration visuelle de la première formule ce sont des nombres positifs.
\begin{center}
\begin{pspicture}(1,0)(6.5,-4.5)
\psset{xunit=1cm,yunit=1cm}
%\psgrid[subgriddiv=1,gridlabels=5pt](0,0)(7,-5) %utlisation d'une grille pour placer une figure
\psframe(1,-1)(6.5,-4.5)
\psline[linestyle=dashed](3.5,-1)(3.5,-4.5)
\psline[linecolor=bleu]{<->}(1,-0.5)(3.5,-0.5) \psline[linecolor=vert]{<->}(3.5,-0.5)(6.5,-0.5)
\rput[B]{0}(2.25,-0.25){\bleu a} \rput[B]{0}(5,-0.25){\vert b}
\psline[linecolor=rouge]{<->}(0.5,-1)(0.5,-4.5)
\rput[l]{0}(0,-2.75){\rouge k}
\rput[B]{0}(2.25,-2.75){\rouge k \bleu a} \rput[B]{0}(5,-2.75){\rouge k \vert b}
\rput[l]{0}(7.5,-2.5){${\rouge k}({\bleu a} + {\vert b})={\rouge k}{\noir a} + {\rouge k}{\vert b}$}
\end{pspicture}
\end{center}

\subsubsection{Applications et exemples}

\begin{itemize}
    \item \textbf{Calcul mental :}
\begin{multialign*}
13\times 99  & = 13 \times(100-1) & = 13\times 100-13\times 1 & = 1300-13 & = 1287\\
25\times 104 & = 25\times(100+4) & = 25\times 100+25\times 4 & = 2500+100 & = 2600
\end{multialign*}
    \item \textbf{Développement d'une expression littérale :}
\begin{multialign*}
3(5a+7)  & = 3\times 5a+3\times 7     & = 15a+21 \\
-2(5-4x) & = -2\times 5-(-2)\times 4x & = -10+8x
\end{multialign*}
    \item \textbf{Réduction d'une expression littérale. ---} La \strong{réduction} est un cas particulier de la \strong{factorisation}.

Ainsi en prenant la propriété ci-avant dans le sens inverse on peut écrire
\[\pnode(0.2,-0.2){A}{\underline{12}} \* x-\pnode(0.2,-0.2){B}{\underline{12}} \* y=\pnode(0.2,-0.2){C}{\underline{12}} \* (x-y)=12(x-y)\]\ncarc[linecolor=black,linestyle=dashed,arcangleA=-20,arcangleB=-30]{->}{A}{C}\ncarc[linecolor=black,linestyle=dashed,arcangleA=-20,arcangleB=-30]{->}{B}{C}
12 est un \strong{facteur commun} ; on a \strong{factorisé} cette expression littérale.
\[14y - 28 = 14 \times y - 14 \times 2 = 14 \times (y-2)\]
\[5m-5 = 5 \times m - 5 \times 1 = 5 \times (m-1)\]
\begin{consequence}
En factorisant les expressions suivantes on les réduit :
\begin{sousconsequence}
    \item $12b+5b=(12+5)b=17b$
    \item $10x-4x=(10-4)x=6x$
    \item $7m+m=7m+1m=(7+1)mb=8m$
\end{sousconsequence}

\end{consequence}
    \item \textbf{Suppression de parenthèses dans une expression littérale.}
    \begin{itemize}
        \item \textbf{\textcolor{rouge}{Addition} et parenthèses.}

Quand les parenthèses sont précédées du signe \og $+$ \fg et qu'elles ne sont pas suivies de \og $\times$ \fg ou \og $\div$ \fg, on peut supprimer ce \og $+$ \fg et les parenthèses.

En effet $+(a+b)=+1\times(a+b)=(+1)\times a + (+1)\times b = a +b$

\begin{exemples}
\begin{sousexemples}
    \item $2x+(3x+5) = 2x+3x+5$
    \item $4x+(-5+3x) = 4x-5+3x$
    \item $8+(5x-6+2x) = 8+5x-6+2x$
\end{sousexemples}
\end{exemples}

    \item \textbf{\textcolor{vert}{Soustraction} et parenthèses}

Quand les parenthèses sont précédées du signe \og $-$ \fg et qu'elles ne sont pas suivies de \og $\times$ \fg ou \og $\div$ \fg, on peut supprimer ce \og $-$ \fg et les parenthèses à condition de mutliplier l'expression entre parenthèses par $-1$.

En effet $-(a+b)=-1\times(a+b)=(-1)\times a + (-1)\times b = -a -b$

\begin{exemple}
Simplifier l'expression $3x-(5-8x)$~:
\[3x-(5-8x)=3x-5+8x\]
\end{exemple}
    \end{itemize}
\end{itemize}

\subsection{Propriété de distributivité double}

\begin{propriete}
$a$, $b$, $c$ et $d$ désignent des nombres relatifs.
\[(\pnode(0.1,-0.1){A}{\rouge a}+\pnode(0.2,0.5){D}{\vert b}) (\pnode(0.1,0.4){B'} \pnode(0.1,-0.1){B}{c} + \pnode(0.1,0.4){C'} \pnode(0.1,-0.1){C}{d} \ncarc[linecolor=gray,arcangleA=-90,arcangleB=-60]{->}{A}{B} \ncarc[linecolor=gray,arcangleA=-90,arcangleB=-60]{->}{A}{C} \ncarc[linecolor=gray,arcangleA=90,arcangleB=60]{->}{D}{B'} \ncarc[linecolor=gray,arcangleA=90,arcangleB=60]{->}{D}{C'}) = {\rouge a}c + {\rouge a}d + {\vert b}c + {\vert b}d\]
\end{propriete}

\subsubsection{Illustration géométrique}

a, b, c et d désignent des mesures de longueurs, ainsi pour l'illustration visuelle de la formule ce sont des nombres positifs.

\begin{center}
\psset{xunit=1cm,yunit=1cm}
%\psgrid[subgriddiv=1,gridlabels=5pt](0,0)(7,-5) %utlisation d'une grille pour placer une figure
\begin{pspicture}(1,0)(10.5,-4.5)
\psframe(1,-1)(6.5,-4.5)
\psline[linestyle=dashed](3.5,-1)(3.5,-4.5)
\psline[linestyle=dashed](1,-2.5)(6.5,-2.5)
\psline[linecolor=bleu]{<->}(1,-0.5)(3.5,-0.5) \psline[linecolor=noir]{<->}(3.5,-0.5)(6.5,-0.5)
\rput[B]{0}(2.25,-0.25){\bleu c} \rput[B]{0}(5,-0.25){\noir d}
\psline[linecolor=rouge]{<->}(0.5,-1)(0.5,-2.5) \psline[linecolor=vert]{<->}(0.5,-2.5)(0.5,-4.5)
\rput[l]{0}(0,-1.75){\rouge a} \rput[l]{0}(0,-3.5){\vert b}
\rput[B]{0}(2.25,-1.75){\rouge a \bleu c} \rput[B]{0}(5,-1.75){\rouge a \noir d}
\rput[b]{0}(2.25,-3.5){\vert b \bleu c} \rput[b]{0}(5,-3.5){\vert b \noir d}
\rput[l]{0}(7.5,-2.5){$({\rouge a} + {\vert b})({\bleu c} + {\noir d})={\rouge a}{\bleu c}+{\rouge a}{\noir d}+{\vert b}{\bleu c}+{\vert b}{\noir d}$}
\end{pspicture}
\end{center}

\subsubsection{Applications et exemples}

\noindent\begin{align*}
(3-a)(4a+2) & = 3\times 4a \;+\; 3 \times 2 \;-\; a \times 4a \;-\; a \times 2 \\
            & = 12a+6-4a^2-2a \\
            & = -4a^2+10a+6 \\
\\
(3x-2)(1-4x) & = 3x\times1\;+\;3x\times(-4x)\;-\;2\times1\;-\;2\times(-4x)\\
             & = 3x-12x^2-2+8x \\
             & -12x^2+11x-2 \\
\end{align*}

\begin{danger}
\strong{Pour ne pas se tromper dans les signes}, il est utile de se souvenir que, par exemple, $3x-2$ est la somme de $3x$ et de $-2$, et que $1-4x$ est la somme de $1$ et de $-4x$. Ainsi, pour le calcul précédent, on a :
\begin{align*}
(3x-2)(1-4x) & = (3x+(-2))(1+(-4x)) \\
             & = (3x) \times 1 \;+\; (3x) \times (-4x) \;+\; (-2) \times 1 \;+\; (-2)\times(-4x) \\
             & = \dots
\end{align*}
\end{danger}

\end{document}

(Pour que ça compile, il a fallu enlever les ... parasite dans le \[...\] de la propriété du IV.1.)

Pour utiliser tout cela, il faut mettre le fichier cours.cls dans le même répertoire que le fichier tex puis compiler.

Si tu compte modifier le fichier .cls souvent (pour rajouter des packages, etc.), c'est probablement le meilleur endroit pour le garder. Si par contre tu veux l'utiliser pour des document dans des répertoires différents ou tu ne prévois pas de le modifier, il vaut mieux l'installer dans le texmf (local) ; la procédure exacte dépend de ta distribution (si c'est miktex, tu peux essayer de suivre les indications du wiki).
pg
Modérateur
 
Messages: 1283
Inscription: Vendredi 15 Juin 2007, 00:31

Re: fichier .cls

Messagede SB le Jeudi 21 Mai 2009, 13:39

ok tout est dit, merci

SB
SB
Hecto-utilisateur
 
Messages: 96
Inscription: Lundi 07 Juillet 2008, 08:15
Statut actuel: Actif et salarié | Enseignant

Re: fichier .cls

Messagede SB le Jeudi 21 Mai 2009, 18:23

Heu encore moi...
J'ai donc un fichier f1.cls et le fichier f2.tex comme indiqué ci-dessus, lorsque je compile, j'ai un message d'erreur que je ne sais résoudre. J'ai vu que vous avez modifié l'option french en frenchb dans le package babel et qu'il y a quelque chose pour éviter des conflits en fin de déclaration de modules. Mais bon, vous avez bien compris que je ne suis pas un pro.

! Package babel Error: You haven't specified a language option.

See the babel package documentation for explanation.
Type H <return> for immediate help.
...

Edit : Je suis un âne, f1.cls doit se nommer cours.cls
c'est ok
SB
SB
Hecto-utilisateur
 
Messages: 96
Inscription: Lundi 07 Juillet 2008, 08:15
Statut actuel: Actif et salarié | Enseignant

Re: Fichier .cls

Messagede SB le Dimanche 19 Juillet 2009, 12:49

Bonjour,

voilà ce que je craignais, je souhaite faire une modification et bien entendu comme j'y comprends rien à Tex, je n'y arrive pas. Je souhaiterais dans mon titre de chapitre avoir deux paramètres : le titre du chapitre (truc) et un thème (bidule). Afin d'obtenir par exemple :

Code: Tout sélectionner
Chapitre 01 : truc
bidule 04


plus encore mieux : si truc se centre sur les deux lignes en vertical

J'ai bidouillé mais rien à faire, j'arrive pas à passer deux paramètres à \def\@makechapterhead et je ne comprends pas l'utilité de \def\@makeschapterhead . Accessoirement j'entrave que pouic à la syntaxe de :

Code: Tout sélectionner
\renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
                        \global\@topnum\z@
                        \@afterindentfalse
                        \secdef\@chapter\@schapter}


Merci par avance de faire reculer mon ignorance infinie,
S
rappel du fichier.cls

Code: Tout sélectionner
    \NeedsTeXFormat{LaTeX2e}[1995/12/01]
    \ProvidesClass{cours}
                  [2009/05/21 v1.0
    Classe de cours personnelle]

    \LoadClass[12pt,a4paper,fleqn]{book}

    \RequirePackage[latin1]{inputenc}
    \RequirePackage[T1]{fontenc}
    \RequirePackage[frenchb]{babel}
    \RequirePackage{lmodern}
    \RequirePackage{eurosym}
    \RequirePackage{geometry}
    \RequirePackage{lastpage}
    \RequirePackage{graphicx}
    \RequirePackage{picins}
    \RequirePackage{pifont}
    \RequirePackage{eepic}
    \RequirePackage{fancybox}
    \RequirePackage{fancyhdr}
    \RequirePackage{pst-all}
    \RequirePackage{pst-eucl}
    \RequirePackage{xcolor}
    \RequirePackage{xlop}
    \RequirePackage[autolanguage]{numprint}
    \RequirePackage{calc}
    \RequirePackage{ifthen}
    \RequirePackage{latexsym}
    \RequirePackage{amsfonts}
    \RequirePackage{amsmath}
    \RequirePackage{amssymb}
    \RequirePackage{amsthm}
    \RequirePackage{mathrsfs}
    \RequirePackage{frcursive}
    \RequirePackage{multirow}
    \RequirePackage{multicol}
    \RequirePackage{array}
    \RequirePackage{tabularx}
    \RequirePackage{colortab}
    \frenchbsetup{ReduceListSpacing=false, CompactItemize=false,
    StandardItemLabels=true}% pour empecher frenchb de perturber enumitem
    \RequirePackage{enumitem}
    \setitemize{nolistsep}
    \setitemize[1]{label=\textbullet}
    \RequirePackage{ulem}
    \normalem

    \newcommand{\colorulem}[1][black]{\bgroup
      \ifdim\ULdepth=\maxdimen\settodepth\ULdepth{(j}\advance\ULdepth.4pt\fi
      \markoverwith{\kern0em\vtop{\kern\ULdepth {\color{#1}\hrule height 1.4pt width .4em}}\kern0em}\ULon}

    % Définitions du format de page
    \geometry{margin=2cm}
    \pagestyle{empty}

    % definition des couleurs
    \definecolor{bleu}{rgb}{0.4,0.2,1} \newrgbcolor{bleu}{0.4 0.2 1}
    \definecolor{rouge}{rgb}{1,0,0} \newrgbcolor{rouge}{1 0 0}
    \definecolor{vert}{rgb}{0.1,0.6,0} \newrgbcolor{vert}{0.1 0.6 0}
    \definecolor{blanc}{rgb}{1,1,1} \newrgbcolor{blanc}{1 1 1}
    \definecolor{noir}{rgb}{0,0,0} \newrgbcolor{noir}{0 0 0}
    \definecolor{gris}{rgb}{0.5,0.5,0.5} \newrgbcolor{gris}{0.5 0.5 0.5}
    \definecolor{grisclair}{rgb}{0.9,0.9,0.9} \newrgbcolor{grisclair}{0.9 0.9 0.9}
    \definecolor{jorange}{rgb}{0.9,0.9,0} \newrgbcolor{jorange}{0.9 0.9 0}
    %symbole attention danger
    \newenvironment{danger}{\noindent\pstribox[shadow=true,trimode=*U]{\bfseries\rouge!}}{}

    % mise en valeur forte
    \newcommand*{\strong}[1]{{\color{rouge}\bfseries#1}}

    % mise en page des propréités, remarques et exemples
    \theoremstyle{definition}
    \newtheorem*{exemple}{Exemple}
    \newtheorem{exemplenumerote}{Exemple}[subsection]
    \renewcommand{\theexemplenumerote}{\arabic{exemplenumerote}}
    \newtheorem*{exemples}{Exemples}
    \newenvironment{sousexemples}{\leavevmode\begin{itemize}}{\end{itemize}}
    \newtheorem*{remarques}{Remarques}
    \newenvironment{sousremarques}{\leavevmode\begin{itemize}}{\end{itemize}}
    \newtheorem*{propriete}{Propriété}
    \newtheorem*{consequence}{Conséquence}
    \newenvironment{sousconsequence}{\leavevmode\begin{itemize}}{\end{itemize}}

    % alignement multiple
    \newenvironment{multialign*}{\[\renewcommand{\arraycolsep}{1.4pt}\begin{array}{lllllllllllll}}{\end{array}\]}

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % personnalisation de la présentation --> ira dans le fichier .cls %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    \renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
                        \global\@topnum\z@
                        \@afterindentfalse
                        \secdef\@chapter\@schapter}

    \def\@makechapterhead#1{%
      \begingroup
      \color{rouge}\fboxsep=10pt\fboxrule=1.4pt
      \noindent\fbox{\noindent\begin{minipage}{\textwidth-20pt}
      \parindent=0pt\centering\normalfont\normalcolor
      \LARGE
        \ifnum \c@secnumdepth >\m@ne
          \if@mainmatter
            \colorulem[rouge]{{\itshape\@chapapp\space \thechapter}~:}
          \fi
        \fi
        \interlinepenalty\@M
        \normalfont\normalcolor\bfseries#1\par\vspace*{1em}\end{minipage}}
        \endgroup
        \vskip 40pt
      }

    \def\@makeschapterhead#1{%
      \begingroup
      \color{rouge}\fboxsep=5pt
      \noindent\fbox{\noindent\begin{minipage}{\textwidth-10pt}
      \parindent=0pt\centering\normalfont\normalcolor
      \LARGE
        \interlinepenalty\@M
        \normalfont\normalcolor\bfseries#1\par\vspace*{1em}\end{minipage}}
        \endgroup
        \vskip 40pt
    }

    \def\@sect#1#2#3#4#5#6[#7]#8{%
      \ifnum #2>\c@secnumdepth
        \let\@svsec\@empty
      \else
        \refstepcounter{#1}%
        \protected@edef\@svsec{\@seccntformat{#1}\relax}%
      \fi
      \@tempskipa #5\relax
      \ifdim \@tempskipa>\z@
        \begingroup
          #6{%
            \@hangfrom{\hskip #3\relax\@svsec}%
              \interlinepenalty \@M \colorulem[\currentsectioncolor]{\normalcolor#8\vphantom{p}}\@@par}%
        \endgroup
        \csname #1mark\endcsname{#7}%
        \addcontentsline{toc}{#1}{%
          \ifnum #2>\c@secnumdepth \else
            \protect\numberline{\csname the#1\endcsname}%
          \fi
          #7}%
      \else
        \def\@svsechd{%
          #6{\hskip #3\relax
          \@svsec #8}%
          \csname #1mark\endcsname{#7}%
          \addcontentsline{toc}{#1}{%
            \ifnum #2>\c@secnumdepth \else
              \protect\numberline{\csname the#1\endcsname}%
            \fi
            #7}}%
      \fi
      \@xsect{#5}}

    \def\@ssect#1#2#3#4#5{%
      \@tempskipa #3\relax
      \ifdim \@tempskipa>\z@
        \begingroup
          #4{%
            \@hangfrom{\hskip #1}%
              \interlinepenalty \@M \colorulem[\currentsectioncolor]{\normalcolor#5\vphantom{p}}\@@par}%
        \endgroup
      \else
        \def\@svsechd{#4{\hskip #1\relax #5}}%
      \fi
      \@xsect{#3}}

    \def\@xsect#1{%
      \@tempskipa #1\relax
      \ifdim \@tempskipa>\z@
        \par \nobreak
        \vskip \@tempskipa
        \@afterheading
      \else
        \@nobreakfalse
        \global\@noskipsectrue
        \everypar{%
          \if@noskipsec
            \global\@noskipsecfalse
           {\setbox\z@\lastbox}%
            \clubpenalty\@M
            \begingroup \@svsechd \endgroup
            \unskip
            \@tempskipa #1\relax
            \hskip -\@tempskipa
          \else
            \clubpenalty \@clubpenalty
            \everypar{}%
          \fi}%
      \fi
      \ignorespaces}

    \setcounter{secnumdepth}{3}
    \renewcommand{\thechapter}{T2}
    \renewcommand{\thesection}{\Roman{section})}
    \renewcommand{\thesubsection}{\arabic{subsection})}
    \renewcommand{\thesubsubsection}{\alph{subsubsection})}

    \def\@seccntformat#1{\csname the#1\endcsname\hskip0.3em}

    \newcommand{\sectionindent}{0cm}
    \newcommand{\subsectionindent}{0.5cm}
    \newcommand{\subsubsectionindent}{1cm}

    \renewcommand\section{%
    \def\currentsectioncolor{rouge}
    \def\currentsectionindent{\sectionindent}
    \setindent{\currentsectionindent}
    \@startsection{section}{1}
      {0cm}% indentation
      {-3.5ex \@plus -1ex \@minus -.2ex}% espace avant
      {2.3ex \@plus.2ex}% espace après
      {\normalfont\Large\bfseries}}

    \renewcommand\subsection{%
    \def\currentsectioncolor{bleu}
    \def\currentsectionindent{\subsectionindent}
    \setindent{\currentsectionindent}
    \@startsection{subsection}{2}
      {0cm}% indentation
      {-3.25ex\@plus -1ex \@minus -.2ex}% espace avant
      {2.3ex \@plus.2ex}% espace après
      {\normalfont\large\bfseries}}

    \renewcommand\subsubsection{%
    \def\currentsectioncolor{vert}
    \def\currentsectionindent{\subsubsectionindent}
    \setindent{\currentsectionindent}
    \@startsection{subsubsection}{3}
      {0cm}% indentation
      {-3.25ex\@plus -1ex \@minus -.2ex}% espace avant
      {2.3ex \@plus.2ex}% espace après
      {\normalfont\normalsize\bfseries}}

    \let\originallinewidth\textwidth
    \newcommand{\setindent}[1]{%
    \linewidth=\originallinewidth
    \leftmargin=0cm
    \@totalleftmargin=0cm
    \@setpar{\if@newlist
                 \advance\par@deathcycles \@ne
                 \ifnum \par@deathcycles >\@m
                   \@noitemerr
                   {\@@par}%
                 \fi
               \else
                 {\@@par}%
               \fi}%
    \leftmargin=#1
    \advance\linewidth -\leftmargin
    \advance\@totalleftmargin\leftmargin
    \parshape \@ne \@totalleftmargin \linewidth}

    \endinput
    %%
    %% End of file `cours.cls'.
SB
Hecto-utilisateur
 
Messages: 96
Inscription: Lundi 07 Juillet 2008, 08:15
Statut actuel: Actif et salarié | Enseignant

Re: Fichier .cls

Messagede pg le Dimanche 19 Juillet 2009, 13:39

Il est possible de faire comme tu veux (rajouter un argument à chapitre), mais je te propose plutôt la syntaxe suivante, qui est probablement plus claire :

Code: Tout sélectionner
\theme{Algèbre}
\chapter{Initiation au calcul littéral}

La commande chapter capture l'argument du \theme précédent et l'affiche centré juste en-dessous. Une fois utilisé, le thème courant est oublié pour le chapitre suivant, mais cela peut se modifier si tu veux.

Voici le nouveau fichier .cls :

Code: Tout sélectionner
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{cours}
              [2009/05/21 v1.0
Classe de cours personnelle]

\LoadClass[12pt,a4paper,fleqn]{book}

\RequirePackage[latin1]{inputenc}
\RequirePackage[T1]{fontenc}
\RequirePackage[frenchb]{babel}
\RequirePackage{lmodern}
\RequirePackage{eurosym}
\RequirePackage{geometry}
\RequirePackage{lastpage}
\RequirePackage{graphicx}
\RequirePackage{picins}
\RequirePackage{pifont}
\RequirePackage{eepic}
\RequirePackage{fancybox}
\RequirePackage{fancyhdr}
\RequirePackage{pst-all}
\RequirePackage{pst-eucl}
\RequirePackage{xcolor}
\RequirePackage{xlop}
\RequirePackage[autolanguage]{numprint}
\RequirePackage{calc}
\RequirePackage{ifthen}
\RequirePackage{latexsym}
\RequirePackage{amsfonts}
\RequirePackage{amsmath}
\RequirePackage{amssymb}
\RequirePackage{amsthm}
\RequirePackage{mathrsfs}
\RequirePackage{frcursive}
\RequirePackage{multirow}
\RequirePackage{multicol}
\RequirePackage{array}
\RequirePackage{tabularx}
\RequirePackage{colortab}
\frenchbsetup{ReduceListSpacing=false, CompactItemize=false,
StandardItemLabels=true}% pour empecher frenchb de perturber enumitem
\RequirePackage{enumitem}
\setitemize{nolistsep}
\setitemize[1]{label=\textbullet}
\RequirePackage{ulem}
\normalem

\newcommand{\colorulem}[1][black]{\bgroup
  \ifdim\ULdepth=\maxdimen\settodepth\ULdepth{(j}\advance\ULdepth.4pt\fi
  \markoverwith{\kern0em\vtop{\kern\ULdepth {\color{#1}\hrule height 1.4pt width .4em}}\kern0em}\ULon}

% Définitions du format de page
\geometry{margin=2cm}
\pagestyle{empty}

% definition des couleurs
\definecolor{bleu}{rgb}{0.4,0.2,1} \newrgbcolor{bleu}{0.4 0.2 1}
\definecolor{rouge}{rgb}{1,0,0} \newrgbcolor{rouge}{1 0 0}
\definecolor{vert}{rgb}{0.1,0.6,0} \newrgbcolor{vert}{0.1 0.6 0}
\definecolor{blanc}{rgb}{1,1,1} \newrgbcolor{blanc}{1 1 1}
\definecolor{noir}{rgb}{0,0,0} \newrgbcolor{noir}{0 0 0}
\definecolor{gris}{rgb}{0.5,0.5,0.5} \newrgbcolor{gris}{0.5 0.5 0.5}
\definecolor{grisclair}{rgb}{0.9,0.9,0.9} \newrgbcolor{grisclair}{0.9 0.9 0.9}
\definecolor{jorange}{rgb}{0.9,0.9,0} \newrgbcolor{jorange}{0.9 0.9 0}
%symbole attention danger
\newenvironment{danger}{\noindent\pstribox[shadow=true,trimode=*U]{\bfseries\rouge!}}{}

% mise en valeur forte
\newcommand*{\strong}[1]{{\color{rouge}\bfseries#1}}

% mise en page des propréités, remarques et exemples
\theoremstyle{definition}
\newtheorem*{exemple}{Exemple}
\newtheorem{exemplenumerote}{Exemple}[subsection]
\renewcommand{\theexemplenumerote}{\arabic{exemplenumerote}}
\newtheorem*{exemples}{Exemples}
\newenvironment{sousexemples}{\leavevmode\begin{itemize}}{\end{itemize}}
\newtheorem*{remarques}{Remarques}
\newenvironment{sousremarques}{\leavevmode\begin{itemize}}{\end{itemize}}
\newtheorem*{propriete}{Propriété}
\newtheorem*{consequence}{Conséquence}
\newenvironment{sousconsequence}{\leavevmode\begin{itemize}}{\end{itemize}}

% alignement multiple
\newenvironment{multialign*}{\[\renewcommand{\arraycolsep}{1.4pt}\begin{array}{lllllllllllll}}{\end{array}\]}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% personnalisation de la présentation --> ira dans le fichier .cls %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\let\@theme\relax
\def\theme#1{\def\@theme{#1}}

\renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
                    \global\@topnum\z@
                    \@afterindentfalse
                    \secdef\@chapter\@schapter}

\def\@makechapterhead#1{%
  \begingroup
  \color{rouge}\fboxsep=10pt\fboxrule=1.4pt
  \noindent\fbox{\noindent\begin{minipage}{\textwidth-20pt}
  \parindent=0pt\centering\normalfont\normalcolor
  \LARGE
    \ifnum \c@secnumdepth >\m@ne
      \if@mainmatter
        \colorulem[rouge]{{\itshape\@chapapp\space \thechapter}~:}
      \fi
    \fi
    \interlinepenalty\@M
    \normalfont\normalcolor\bfseries#1\par
    \vspace*{0.25em}%
    \normalfont\itshape\strut\@theme\global\let\@theme\relax\par
    \end{minipage}}
    \endgroup
    \vskip 40pt
  }

\def\@makeschapterhead#1{%
  \begingroup
  \color{rouge}\fboxsep=10pt\fboxrule=1.4pt
  \noindent\fbox{\noindent\begin{minipage}{\textwidth-20pt}
  \parindent=0pt\centering\normalfont\normalcolor
  \LARGE
    \interlinepenalty\@M
    \normalfont\normalcolor\bfseries#1\par
    \vspace*{0.25em}%
    \normalfont\itshape\strut\@theme\global\let\@theme\relax\par
    \end{minipage}}
    \endgroup
    \vskip 40pt
}

\def\@sect#1#2#3#4#5#6[#7]#8{%
  \ifnum #2>\c@secnumdepth
    \let\@svsec\@empty
  \else
    \refstepcounter{#1}%
    \protected@edef\@svsec{\@seccntformat{#1}\relax}%
  \fi
  \@tempskipa #5\relax
  \ifdim \@tempskipa>\z@
    \begingroup
      #6{%
        \@hangfrom{\hskip #3\relax\@svsec}%
          \interlinepenalty \@M \colorulem[\currentsectioncolor]{\normalcolor#8\vphantom{p}}\@@par}%
    \endgroup
    \csname #1mark\endcsname{#7}%
    \addcontentsline{toc}{#1}{%
      \ifnum #2>\c@secnumdepth \else
        \protect\numberline{\csname the#1\endcsname}%
      \fi
      #7}%
  \else
    \def\@svsechd{%
      #6{\hskip #3\relax
      \@svsec #8}%
      \csname #1mark\endcsname{#7}%
      \addcontentsline{toc}{#1}{%
        \ifnum #2>\c@secnumdepth \else
          \protect\numberline{\csname the#1\endcsname}%
        \fi
        #7}}%
  \fi
  \@xsect{#5}}

\def\@ssect#1#2#3#4#5{%
  \@tempskipa #3\relax
  \ifdim \@tempskipa>\z@
    \begingroup
      #4{%
        \@hangfrom{\hskip #1}%
          \interlinepenalty \@M \colorulem[\currentsectioncolor]{\normalcolor#5\vphantom{p}}\@@par}%
    \endgroup
  \else
    \def\@svsechd{#4{\hskip #1\relax #5}}%
  \fi
  \@xsect{#3}}

\def\@xsect#1{%
  \@tempskipa #1\relax
  \ifdim \@tempskipa>\z@
    \par \nobreak
    \vskip \@tempskipa
    \@afterheading
  \else
    \@nobreakfalse
    \global\@noskipsectrue
    \everypar{%
      \if@noskipsec
        \global\@noskipsecfalse
       {\setbox\z@\lastbox}%
        \clubpenalty\@M
        \begingroup \@svsechd \endgroup
        \unskip
        \@tempskipa #1\relax
        \hskip -\@tempskipa
      \else
        \clubpenalty \@clubpenalty
        \everypar{}%
      \fi}%
  \fi
  \ignorespaces}

\setcounter{secnumdepth}{3}
\renewcommand{\thechapter}{T\arabic{chapter}}
\renewcommand{\thesection}{\Roman{section})}
\renewcommand{\thesubsection}{\arabic{subsection})}
\renewcommand{\thesubsubsection}{\alph{subsubsection})}

\def\@seccntformat#1{\csname the#1\endcsname\hskip0.3em}

\newcommand{\sectionindent}{0cm}
\newcommand{\subsectionindent}{0.5cm}
\newcommand{\subsubsectionindent}{1cm}

\renewcommand\section{%
\def\currentsectioncolor{rouge}
\def\currentsectionindent{\sectionindent}
\setindent{\currentsectionindent}
\@startsection{section}{1}
  {0cm}% indentation
  {-3.5ex \@plus -1ex \@minus -.2ex}% espace avant
  {2.3ex \@plus.2ex}% espace après
  {\normalfont\Large\bfseries}}

\renewcommand\subsection{%
\def\currentsectioncolor{bleu}
\def\currentsectionindent{\subsectionindent}
\setindent{\currentsectionindent}
\@startsection{subsection}{2}
  {0cm}% indentation
  {-3.25ex\@plus -1ex \@minus -.2ex}% espace avant
  {2.3ex \@plus.2ex}% espace après
  {\normalfont\large\bfseries}}

\renewcommand\subsubsection{%
\def\currentsectioncolor{vert}
\def\currentsectionindent{\subsubsectionindent}
\setindent{\currentsectionindent}
\@startsection{subsubsection}{3}
  {0cm}% indentation
  {-3.25ex\@plus -1ex \@minus -.2ex}% espace avant
  {2.3ex \@plus.2ex}% espace après
  {\normalfont\normalsize\bfseries}}

\let\originallinewidth\textwidth
\newcommand{\setindent}[1]{%
\linewidth=\originallinewidth
\leftmargin=0cm
\@totalleftmargin=0cm
\@setpar{\if@newlist
             \advance\par@deathcycles \@ne
             \ifnum \par@deathcycles >\@m
               \@noitemerr
               {\@@par}%
             \fi
           \else
             {\@@par}%
           \fi}%
\leftmargin=#1
\advance\linewidth -\leftmargin
\advance\@totalleftmargin\leftmargin
\parshape \@ne \@totalleftmargin \linewidth}

\endinput
%%
%% End of file `cours.cls'.

et un exemple de fichier .tex l'utilisant :

Code: Tout sélectionner
\documentclass{cours}

\begin{document}

\setcounter{chapter}{1}% pour mettre le compteur de chapitre à 2
\theme{Algèbre}
\chapter{Initiation au calcul littéral}

\chapter{Initiation à la trigonométrie}

\theme{Analyse}
\chapter*{Initiation à l'intégration}

\chapter*{Initiation à a dérivation}

\end{document}


Concernant tes questions, \@makechapterhead fabrique l'en-tête des \chapter tandis que \@makeschapterhead fabrique l'en-tête des \chapter* (le s supplémentaire voulant dire star). Pour assurer une présentation homogène des deux, il faut toujours les modifier en même temps. La syntaxe

Code: Tout sélectionner
\renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
\global\@topnum\z@
\@afterindentfalse
\secdef\@chapter\@schapter}

a la signification suivante :
  • \if@openright\cleardoublepage\else\clearpage\fi : si l'option openright est activée, on saute une ou deux pages afin de commencer le chapitre sur une page impaire ; sinon, on saute uniquement une page.
  • \global\@topnum\z@ : on règle la distance \@topnum comme étant nulle (\z@ est un raccourci pour zéro)
  • \@afterindentfalse : règle l'indentation après le chapitre à faux (ici, le changer en true n'aura pas d'effet puisque frenchb impose sa règle)
  • \secdef\@chapter\@schapter : si jamais \chapter est suivi d'une étoile, on fait appel à \@schapter et sinon, on fait appel à \@chapter.
pg
Modérateur
 
Messages: 1283
Inscription: Vendredi 15 Juin 2007, 00:31

Re: Fichier .cls

Messagede SB le Dimanche 19 Juillet 2009, 15:46

Merci pour la patience et la peine pour m'aider sieur pg. C'est nickel et je comprends mieux.

S
SB
Hecto-utilisateur
 
Messages: 96
Inscription: Lundi 07 Juillet 2008, 08:15
Statut actuel: Actif et salarié | Enseignant

Re: Fichier .cls

Messagede SB le Vendredi 28 Août 2009, 18:50

Vous allez me trouver très lourd ...

A l'issue de la création du fichier .cls, le numéro de chapitre est un compteur, mais j'aimerais nommer chapitre T1 : bidule.
Thème : Machin
(T pour transverse), c'est possible ?

D'avance merci,
SB
SB
Hecto-utilisateur
 
Messages: 96
Inscription: Lundi 07 Juillet 2008, 08:15
Statut actuel: Actif et salarié | Enseignant

Re: Fichier .cls

Messagede pg le Vendredi 28 Août 2009, 18:58

Je viens de reprendre les fichiers de mon précédent message, et il y a bien le T avant le numéro de chapitre. Si tu ne l'as pas, c'est qu'il doit manquer la ligne suivante dans ton fichier .cls :

Code: Tout sélectionner
\renewcommand{\thechapter}{T\arabic{chapter}}
pg
Modérateur
 
Messages: 1283
Inscription: Vendredi 15 Juin 2007, 00:31

Re: Fichier .cls

Messagede SB le Samedi 29 Août 2009, 09:42

merci

SB
SB
Hecto-utilisateur
 
Messages: 96
Inscription: Lundi 07 Juillet 2008, 08:15
Statut actuel: Actif et salarié | Enseignant

Re: Fichier .cls

Messagede SB le Mercredi 20 Janvier 2010, 13:34

Bonjour,

j'ai un message d'erreur avec l'utilisation de la commande \overrightarrow dans le libellé d'une section.

Si vous pouviez m'éclairer.

Code: Tout sélectionner
\documentclass{cours}

\begin{document}

\setcounter{chapter}{5}% pour mettre le compteur de chapitre à 6
\theme{Géométrie 06}
\chapter{Les vecteurs (partie 1)}


\section{Translation et vecteur $\overrightarrow{AB}$}
 

\end{document}



et ce message que je ne comprends pas :
LaTeX Font Info: External font `lmex10' loaded for size
(Font) <17.28> on input line 14.
LaTeX Font Info: External font `lmex10' loaded for size
(Font) <10> on input line 14.
! Illegal parameter number in definition of \@themark.
<to be read again>
\crcr
l.14 ...nslation et vecteur \overrightarrow{AB}}


SB
SB
Hecto-utilisateur
 
Messages: 96
Inscription: Lundi 07 Juillet 2008, 08:15
Statut actuel: Actif et salarié | Enseignant

Re: Fichier .cls

Messagede Altermundus le Mercredi 20 Janvier 2010, 13:49

SB a écrit:j'ai un message d'erreur avec l'utilisation de la commande \overrightarrow dans le libellé d'une section.
Code: Tout sélectionner
\section{Translation et vecteur $\overrightarrow{AB}$}


Bonjour

Il suffit de mettre

Code: Tout sélectionner
\section{Translation et vecteur $\protect\overrightarrow{AB}$}


Alain Matthes
Altermundus
Méga-utilisateur
 
Messages: 369
Inscription: Lundi 28 Mai 2007, 10:31
Localisation: Paris
Statut actuel: Actif et salarié | Enseignant

Re: Fichier .cls

Messagede SB le Mercredi 20 Janvier 2010, 15:27

Merci, ça marche nickel.

Si c'est pas trop technique, que se passait-il?

SB
SB
Hecto-utilisateur
 
Messages: 96
Inscription: Lundi 07 Juillet 2008, 08:15
Statut actuel: Actif et salarié | Enseignant

Re: Fichier .cls

Messagede kojak le Mercredi 20 Janvier 2010, 15:40

Bonjour,

en gros dans un titre de section ou subsection et autre, pas de formule mathématique, sauf en rusant :D

Code: Tout sélectionner
\subsection{Solution de l'équation \texorpdfstring{$f'=kf$}{}}
pas d'aide par MP
kojak
Modérateur
 
Messages: 8135
Inscription: Samedi 18 Novembre 2006, 20:50
Statut actuel: Actif et salarié | Enseignant

Re: Fichier .cls

Messagede Altermundus le Mercredi 20 Janvier 2010, 16:36

kojak a écrit:Bonjour,

en gros dans un titre de section ou subsection et autre, pas de formule mathématique, sauf en rusant :D

Code: Tout sélectionner
\subsection{Solution de l'équation \texorpdfstring{$f'=kf$}{}}


Non je suis pas d'accord avec ceci. Mister kojak complique le problème \texorpdfstring
est fourni avec hyperref, ensuite le problème avec hyperref n'est pas exactement le même.
Les bookmarks ou encore signets n'acceptent pas n'importe quoi comme caratcères.
C'est la raison du \texorpdfstring pour ne pas avoir de warning de la part de hyperref, il faut
fournir un texte acceptable pour les signets MAIS cela n'empêche que
\overrightarrow doit être protéger !!

Code: Tout sélectionner
\subsection{Solution de l'équation \texorpdfstring{$\overrightarrow{AB}$}{}}


ne fonctionne pas , il faut aussi

Code: Tout sélectionner
\subsection{Solution de l'équation \texorpdfstring{$\protect\overrightarrow{AB}$}{}}


voici un code pour faire joujou c'est à dire on utilise hyperref ou pas.
Le problème rencontré avec \section et \overrightarrow est le problème
de la commande fragile ou encore de l'argument mouvant (voir sur le net
fragile command ou encore moving argument )

Code: Tout sélectionner
\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[frenchb]{babel}
\usepackage[T1]{fontenc}
\usepackage{fourier}
\usepackage{xcolor} 
\usepackage{hyperref}  % on commente pour un essai
\def\texte{ bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla  bla }
\pagestyle{empty}
\begin{document}
  \tableofcontents 
   
   \vspace{6cm}
\texte
\section{Introduction}
\texte
\section{Translation et vecteur $\protect\overrightarrow{AB}$}
\texte     
\subsection{Solution de l'équation \texorpdfstring{$\protect\overrightarrow{AB}$}{vecteur AB}}
\texte   
\section{\texorpdfstring{$E=mc^2$}{mc2}}   % pas besoin de protect

\section{\textcolor{red}{Red !}}   % voir ici aussi avec \texorpdfstring ce qui change dans le log
\end{document} 


Alain Matthes
Altermundus
Méga-utilisateur
 
Messages: 369
Inscription: Lundi 28 Mai 2007, 10:31
Localisation: Paris
Statut actuel: Actif et salarié | Enseignant

Re: fichier .cls

Messagede Altermundus le Mercredi 20 Janvier 2010, 17:19

pg a écrit:Dans le fichier cls, on peut mettre tout le préambule et les options du documentclass. Mettre tous les appels de packages peut être pratique (pas besoin de les taper à chaque document), mais a des inconvénients (la liste des packages utilisées n'est plus sous les yeux donc on peut oublier ce qui a été chargé ou pas). Le guide pour fabriquer des fichiers cls est le clsguide.


Tout d'abord je trouve très bien de voir des exemples de classe et dans la mesure ou j'ai encore du boulot
à faire sur la mienne et qu'il me faudra la soumettre aux critiques, je me permets quelques remarques (constructives je l'espère !)
sur celle-ci.

Je suis d'accord sur la réserve à propos des appels de packages dans la classe. Pour plus de souplesse, cela doit être fait en dehors .

J'ai réfléchi un bon moment sur la méthode à employer et pourtant je pense avoir commis des erreurs.
Le rôle de la classe, il me semble, est de fournir la structure du document, aussi je ne trouve pas normal d'y voir un
appel latin1 par exemple.
Ensuite supposons que l'on veuille changer de fontes, il faut modifier la classe et cela n'est pas normal. Ici par exemple
le changement de lmodern en fourier entraine une cata. Les couleurs également n'ont pas grand chose à voir avec la structure
et si on vire pstricks tout tombe à l'eau.

Il me semble préférable de dégager le maximum de packages à l'exception de ceux qui définissent la structure.
ifthen, calc et geometry me semblent indispensable ou bien pas de geometry si on passe à Koma-script.

latin1 et utf8 peuvent être appelés avec une option.

Por résumer il me semble que la classe est donc le bloc que l'on ne doit pas modifier ensuite que faire ?

Soit on met tout dans le préambule (c'est lourd) dans un fichier quelconque, dans un package , ou ce que j'ai choisi
mais ce n'est pour cela que c'est la meilleure idée un fichier .cfg de configuration.
On n'a pas les packages sous les yeux mais c'est quand ce que l'on souhaite, mais on ne touche pas à la structure du
document quand on le modifie

J'ai fait cela comme ça :
Code: Tout sélectionner
\InputIfFileExists{coursparam.cfg}{\typeout{Local file coursparam.cfg utilisé}}{\typeout{coursparam.cfg non trouvé}} 


On peut raffiner avec un truc minimum coursdefaut.cfg si coursparam.cfg n'est pas trouvé

J'aimerais bien savoir ce que vous en pensez avant mettre à jour ma classe.

Alain Matthes
Altermundus
Méga-utilisateur
 
Messages: 369
Inscription: Lundi 28 Mai 2007, 10:31
Localisation: Paris
Statut actuel: Actif et salarié | Enseignant

Re: fichier .cls

Messagede pg le Vendredi 22 Janvier 2010, 00:28

Altermundus a écrit:Je suis d'accord sur la réserve à propos des appels de packages dans la classe. Pour plus de souplesse, cela doit être fait en dehors.

Seulement si c'est la souplesse qui est visée. On peut très bien imaginer de créer une classe qui force au contraire l'utilisateur à utiliser certaines choses (encodage, présentation, langue, etc.). Je pense par exemple à une classe personnelle faite pour s'assurer que tous les documents sont absolument identiques ou à un éditeur qui voudrait que tous ses livres utilisent un encodage spécifique, la police qu'il a défini dans sa maquette, les couleurs spécifiques à sa présentation, etc.

À l'autre bout du spectre, il y a les classes généralistes, type article, report ou book, qui, elles, ne forcent l'utilisation de rien du tout.

Altermundus a écrit:Il me semble préférable de dégager le maximum de packages à l'exception de ceux qui définissent la structure.
ifthen, calc et geometry me semblent indispensable ou bien pas de geometry si on passe à Koma-script.

Pour une classe la plus généraliste possible, je limiterai effectivement les packages au minimum, à savoir seulement ceux utilisés dans le code du cls. Ça peut éviter des problèmes (du genre l'utilisateur essaie de charger le package avec d'autres options, ce qui cause un message d'erreur du type "Option clash for package ******").

Le choix d'inclure geometry ou pas dépend : est-ce que la présentation nécessite une taille de papier spécifique ou des marges particulières ? Si la réponse est non, il vaut mieux ne pas l'inclure, ce qui laisse le choix à l'utilisateur.

Altermundus a écrit:latin1 et utf8 peuvent être appelés avec une option.

En option de classe ? Dans ce cas, je laisserai plutôt l'utilisateur charger inputenc, ça lui permettra éventuellement d'utiliser des encodages non prévus par le concepteur de la classe (selon comment la fonctionnalité est codée), et surtout, ça ne changera pas ses habitudes. Idem pour fontenc et les polices ; certaines langues utilisent des options un peu exotiques qu'il ne faut pas exclure a priori.

Altermundus a écrit:Pour résumer il me semble que la classe est donc le bloc que l'on ne doit pas modifier ensuite que faire ?

Je ne dirais pas qu'on ne doive pas le modifier, mais plutôt que la classe pose les fonctionnalités de base du document (ce qui n'empêche pas l'utilisateur de charger des packages par la suite pour personnaliser certains aspects). En règle générale, dans une classe, il y a deux choses à différencier :
  • les fonctionnalités ;
  • la présentation.
L'intérêt d'une classe peut résider dans l'un ou l'autre, voire les deux.

Exemple de fonctionnalités : présence de \chapter dans book et report mais pas dans article ; présence de \frontmatter, \mainmatter et \backmatter dans book et pas dans report ou article ; etc. Ce que j'ai appelé "présentation" peut prendre plusieurs visages : apparence des chapitres, effet exact de \frontmatter (numéros de pages en romain ou pas, suppression ou non de la numérotation, etc.), ce que fait l'étoile dans \section*, etc. Un document intéressant à lire sur ce genre de sujet est la documentation du futur xtemplate de LaTeX 3 (c'est très généraliste donc un peu abstrait, mais ça vaut le coup d'œil).

Altermundus a écrit:Soit on met tout dans le préambule (c'est lourd) dans un fichier quelconque, dans un package , ou ce que j'ai choisi
mais ce n'est pour cela que c'est la meilleure idée un fichier .cfg de configuration.


Les fichiers de configuration (fournis avec la classe, c'est bien ça ?) posent un problème : si l'utilisateur modifie ce fichier mais oublie de le transmettre avec son fichier .tex, la personne qui reçoit le fichier n'aura pas le même (ce qui peut, selon les cas, soit empêcher la compilation, soit donner un résultat différent). Et tel quel, il n'est pas possible d'avoir plusieurs jeux globaux de ces fichiers pour avoir plusieurs utilisations différentes (pour deux types de documents bien distincts, par exemple).

Il vaut mieux limiter ce genre de fonctionnalité aux fichiers spécifiques à une installation donnée (par exemple, updmap.cfg) ou pour des modifications sans conséquence grave (par exemple, le choix de cm-super au lieu de lmodern sur un sytème particulier : la présentation du document sera presque inchangée) ; le package frenchb, par exemple, recommande (voir le § 3 de la documentation) de ne plus utiliser frenchb.cfg pour personnaliser les documents et d'utiliser la commande \frenchbsetup à la place.
pg
Modérateur
 
Messages: 1283
Inscription: Vendredi 15 Juin 2007, 00:31

Re: Fichier .cls

Messagede Altermundus le Samedi 23 Janvier 2010, 15:42

Bon tout d'abord merci pour tes idées et je suis d'accord avec la majorité d'entre-elles. Quelles remarques supplémentaires :

Seulement si c'est la souplesse qui est visée. On peut très bien imaginer de créer une classe qui force au contraire l'utilisateur à utiliser certaines choses (encodage, présentation, langue, etc.). Je pense par exemple à une classe personnelle faite pour s'assurer que tous les documents sont absolument identiques ou à un éditeur qui voudrait que tous ses livres utilisent un encodage spécifique, la police qu'il a défini dans sa maquette, les couleurs spécifiques à sa présentation, etc.

À l'autre bout du spectre, il y a les classes généralistes, type article, report ou book, qui, elles, ne forcent l'utilisation de rien du tout.


J'admets ton point de vue car j'ai voulu faire comme tu le dis. Pour moi c'était utf8, fourier, tikz ,amsmath !
Simplement, j'ai changé un peu. Il m'arrive d'oublier fourier pour concrete. Il m'arrive de vouloir compiler des codes qui viennent de l'extérieur avec ma classe et puis je l'ai refilé à des copains et j'ai le service après-donation. Chacun voulait son truc perso.
Ta remarque sur les éditeurs est bonne mais justement c'est fort compliqué à modifier. Je l'ai fait avec "hermes" qui utilise une classe que l'on retrouve un peu partout (c'est une horreur à modifier) et avec les Presses polytechniques et universitaires Romandes , je donne le lien pour ceux que cela intéressent:
http://www.ppur.org/st_livres.html
Ils passent par article ou book suivant le genre de publications et prennent des paquets personnalisés. C'est plus simple car ils laissent pas de trucs dans le préambule.
En gros , il me semble que soit l'on veut figer ( et c'est dommage) soit on donne de la souplesse. Je pense mais bon c'est personnel que l'on est gagnant avec un peu de souplesse en cas de pépin.

je limiterai effectivement les packages au minimum, à savoir seulement ceux utilisés dans le code du cls. Ça peut éviter des problèmes (du genre l'utilisateur essaie de charger le package avec d'autres options, ce qui cause un message d'erreur du type "Option clash for package ******").


Je viens d'avoir le problème avec mes propres packages et ma classe. D'ailleurs, il faudrait en discuter.
Dans mon fichier .cfg qui accompagne ma classe, j'appelle xcolor avec des options puis Tikz mais dans mes packages j'appelle encore tikz et lui appelle xcolor sans option. Cela se passe mal. Au point où j'en suis je vais virer tikz et xcolor de mes packages et demander aux utilisateurs de les appeler eux-mêmes.

Dans ce cas, je laisserai plutôt l'utilisateur charger inputenc, ça lui permettra éventuellement d'utiliser des encodages non prévus par le concepteur de la classe (selon comment la fonctionnalité est codée), et surtout, ça ne changera pas ses habitudes. Idem pour fontenc et les polices ; certaines langues utilisent des options un peu exotiques qu'il ne faut pas exclure a priori.


Oui d'accord moi je le mets dans mon .cfg mais cela pourrait être dans le préambule ou un le package perso
Code: Tout sélectionner
En règle générale, dans une classe, il y a deux choses à différencier :
les fonctionnalités ;
la présentation.


D'accord !
Il faut bien étudier les deux. Pour une classe Devoirs Feuilles d'exos il y a en effet la structure (architecture)
mode vertival mode horizontal, les marges , entête et pied de page , les différents renseignements nom école type de devoir

Et puis la gestion des exos, listes d'exos , les paramètres pour modifier tout cela, mettre des images juxtaposant un texte etc ..
Les fichiers de configuration (fournis avec la classe, c'est bien ça ?) posent un problème : si l'utilisateur modifie ce fichier mais oublie de le transmettre avec son fichier .tex


Pas sûr, le problème existe de toute façon sauf si tout est dans la classe (si on l'a et si elle n'est pas mofiée) ou encore le plus sûr tout est dans le document en préambule avec une classe standard.
Dans mon cas, il n'y a dans mon prof.cfg, que des appels à des packages. S' il manque des packages, il suffit de les mettre dans le préambule. Quand le .cfg manque j'en ai nommé profdefault.cfg pour parer aux trucs urgents et pour aider ceux qui ne comprennent pas ou bien qui ne lisent pas les docs :)

Il vaut mieux limiter ce genre de fonctionnalité aux fichiers spécifiques à une installation donnée (par exemple, updmap.cfg) ou pour des modifications sans conséquence grave (par exemple, le choix de cm-super au lieu de lmodern sur un sytème particulier : la présentation du document sera presque inchangée) ; le package frenchb, par exemple, recommande (voir le § 3 de la documentation) de ne plus utiliser frenchb.cfg pour personnaliser les documents et d'utiliser la commande \frenchbsetup à la place.


Oui je me suis posé la question mais j'ai préféré un prof.cfg à un package perso.sty dans la mesure où j'ai voulu de pas les mettre dans la classe. Il me semble que c'est une affaire d'habitudes mais j'avoue que cela m'a posé des problèmes non pas techniques mais de conception.
Par exemple, le nom de l'auteur, l'établissement tu ne les changent pas tous les jours. Il m'a semblé logique de gérer cela dans un .cfg.
En revanche le nom de la classe, le type de devoir, la durée c'est obligatoirement des paramètres de la classe.
Idem peut être pour les marges, forme des entêtes (justement on vient de me demander de pouvoir choisir parmi plusieurs styles d'entêtes. Je peux par exemple mettre une option dans la classe pour choisir l'entête mais si il y a des paramètres à changer je fais quoi ? encore une fois soit c'est dans .cfg soit des macros dans la classe genre \frenchbsetup, soit les deux. Et on peut concevoir des packages pour modifier tout cela.

Il y a des paramètres temporaires et d'autres de longue durée. Maintenant est-ce que le .cfg est le plus simple pour faire cela ce n'est pas sûr. Le problème c'est le manque d'habitude des utilisateurs en général quand surtout ils ne lisent pas les docs.

Pour conclure, ce serait peut être le rôle d'une association comme http://smf.emath.fr/ de mettre à disposition ce genre de matériel. un smfmath serait utile en proposant une classe, un essai de normalisation pour le nom de certaines macros
(en sachant que l'on peut y mettre ce que l'on veut) moi cela m'agace de voir \vec \vet \vector \vecteur autant redéfinir \vec. C'est pour cela que j'essaie de me baser sur latex et amsmath mais un fmsmath m'irait très bien.

Il se peut que cela existe déjà. Ils ont http://smf.emath.fr/Publications/Formats/ mais certains trucs datent un peu.

Au passage un document qui peut intéresser des matheux:
http://smf.emath.fr/Publications/Explos ... -maths.pdf
Dommage qu'ils ne donnent pas le source !

Alain Matthes
Altermundus
Méga-utilisateur
 
Messages: 369
Inscription: Lundi 28 Mai 2007, 10:31
Localisation: Paris
Statut actuel: Actif et salarié | Enseignant

Précédent

Retourner vers LaTeX

Qui est en ligne

Utilisateurs parcourant ce forum: Exabot [Bot], MSN [Bot] et 3 invités