8

I am making a bank of exercises for a course. To do this, I use the exam class, which uses the same sectioning as the article class.

To do this, I have a separate .tex files with the questions, inside sections, subsections that uses the exam class format.

The main .tex file consists only of a \Part{Questions} \input{questions.tex} and a \Part{Answers} \input{questions.tex}. When the \part is printed, it gives the following:

Part I

Questions

I would like to remove the Part 1 header.

@Werner has a solution in this question, where the report class had been used. Using is solution seems to work, but LaTeX gives me a undefined control sequence for each \part I have.

Here is a MWE without Werner's solution

\documentclass[12pt]{exam}
\usepackage{lmodern}
\usepackage[T1]{fontenc}    
\usepackage[utf8]{inputenc}     
\usepackage{amsfonts,amsmath,amssymb,amsthm,mathrsfs} 
\usepackage{sectsty}
\pagestyle{headandfoot}
\firstpageheadrule
\firstpageheader{Probabilités}{}{MAT-1720}                             
\firstpagefooter{}{}{\thepage}
\firstpagefootrule
\runningheadrule
\runningheader{Probabilités}{}{MAT-1720}  
\runningfooter{Nom du professeur}{}{\thepage}
\runningfootrule
\title{Banque d'exercices pour MAT-1720}
\author{Nom du professeur - Institut}
\date{Automne 2014}
\begin{document}
\maketitle
\thispagestyle{headandfoot}
\tableofcontents
\newpage
\part{Questions}
\noprintanswers
\begin{questions}
\newcounter{NombredeQ}
\setcounter{NombredeQ}{1}
\newcounter{NombredeR}
\setcounter{NombredeR}{1}
\section{ Dénombrement  }
\subsection{Principes de dénombrement}
\question \ifthenelse{\boolean{printanswers}}{\label{R:\theNombredeR}}{\label{Q:\thequestion}}  Ceci est une question test. Quel est le sigle du cours probabilités à l'UdeM? 
\\\ifthenelse{\boolean{printanswers}}{\textbf{Retour à la question \ref{Q:\theNombredeQ}.}\stepcounter{NombredeQ} \stepcounter{NombredeR}}{\textbf{Voir la \hyperref[R:\thequestion]{solution} à la question.  }}
\begin{solution}
Le sigle est MAT-1720.
\end{solution}
\subsection{Permutations et Combinaisons}
\question \ifthenelse{\boolean{printanswers}}{\label{R:\theNombredeR}}{\label{Q:\thequestion}}
 Ceci est une autre question test. Quel est le nom du cours qui a pour sigle MAT-1720 à L'UdeM? 
\\\ifthenelse{\boolean{printanswers}}{\textbf{Retour à la question \ref{Q:\theNombredeQ}.}\stepcounter{NombredeQ} \stepcounter{NombredeR}}{\textbf{Voir la \hyperref[R:\thequestion]{solution} à la question. }}
\begin{solution}
Le cours est probabilité.
\end{solution}
\newpage
\part{Solutions}
\qformat{\shadowbox{\textbf{Solution à l'exercice} \theNombredeQ}  \hfill}
\printanswers
\section{ Dénombrement  }
\subsection{Principes de dénombrement}
\question \ifthenelse{\boolean{printanswers}}{\label{R:\theNombredeR}}{\label{Q:\thequestion}}  Ceci est une question test. Quel est le sigle du cours probabilités à l'UdeM? 
\\\ifthenelse{\boolean{printanswers}}{\textbf{Retour à la question \ref{Q:\theNombredeQ}.}\stepcounter{NombredeQ} \stepcounter{NombredeR}}{\textbf{Voir la \hyperref[R:\thequestion]{solution} à la question.  }}
\begin{solution}
Le sigle est MAT-1720.
\end{solution}
\subsection{Permutations et Combinaisons}
\question \ifthenelse{\boolean{printanswers}}{\label{R:\theNombredeR}}{\label{Q:\thequestion}}
 Ceci est une autre question test. Quel est le nom du cours qui a pour sigle MAT-1720 à L'UdeM? 
\\\ifthenelse{\boolean{printanswers}}{\textbf{Retour à la question \ref{Q:\theNombredeQ}.}\stepcounter{NombredeQ} \stepcounter{NombredeR}}{\textbf{Voir la \hyperref[R:\thequestion]{solution} à la question. }}
\begin{solution}
Le cours est probabilité.
\end{solution}
\end{questions}
\end{document}

And now the same code with Werner's code

\documentclass[12pt]{exam}
\usepackage{lmodern}
\usepackage[T1]{fontenc}    
\usepackage[utf8]{inputenc}     
%\usepackage[francais]{babel}
\usepackage{amsfonts,amsmath,amssymb,amsthm,mathrsfs} 
\usepackage{sectsty}
\usepackage{hyperref} 
\makeatletter
\def\@part[#1]#2{%
    \ifnum \c@secnumdepth >-2\relax
      \refstepcounter{part}%
      \addcontentsline{toc}{part}{#1}%
    \else
      \addcontentsline{toc}{part}{#1}%
    \fi
    \markboth{}{}%
    {\centering
     \interlinepenalty \@M
     \normalfont
     \Huge \bfseries  #2\par}%
    \@endpart}
\makeatother
\pagestyle{headandfoot}
\firstpageheadrule
\firstpageheader{Probabilités}{}{MAT-1720}                             
\firstpagefooter{}{}{\thepage}
\firstpagefootrule
\runningheadrule
\runningheader{Probabilités}{}{MAT-1720}  
\runningfooter{Nom du professeur}{}{\thepage}
\runningfootrule
\title{Banque d'exercices pour MAT-1720}
\author{Nom du professeur - Institut}
\date{Automne 2014}
\begin{document}
\maketitle
\thispagestyle{headandfoot}
\tableofcontents
\newpage
\part{Questions}
\noprintanswers
\begin{questions}
\newcounter{NombredeQ}
\setcounter{NombredeQ}{1}
\newcounter{NombredeR}
\setcounter{NombredeR}{1}
\section{ Dénombrement  }
\subsection{Principes de dénombrement}
\question \ifthenelse{\boolean{printanswers}}{\label{R:\theNombredeR}}{\label{Q:\thequestion}}  Ceci est une question test. Quel est le sigle du cours probabilités à l'UdeM? 
\\\ifthenelse{\boolean{printanswers}}{\textbf{Retour à la question \ref{Q:\theNombredeQ}.}\stepcounter{NombredeQ} \stepcounter{NombredeR}}{\textbf{Voir la \hyperref[R:\thequestion]{solution} à la question.  }}
\begin{solution}
Le sigle est MAT-1720.
\end{solution}
\subsection{Permutations et Combinaisons}
\question \ifthenelse{\boolean{printanswers}}{\label{R:\theNombredeR}}{\label{Q:\thequestion}}
 Ceci est une autre question test. Quel est le nom du cours qui a pour sigle MAT-1720 à L'UdeM? 
\\\ifthenelse{\boolean{printanswers}}{\textbf{Retour à la question \ref{Q:\theNombredeQ}.}\stepcounter{NombredeQ} \stepcounter{NombredeR}}{\textbf{Voir la \hyperref[R:\thequestion]{solution} à la question. }}
\begin{solution}
Le cours est probabilité.
\end{solution}
\newpage
\part{Solutions}
\printanswers
\section{ Dénombrement  }
\subsection{Principes de dénombrement}
\question \ifthenelse{\boolean{printanswers}}{\label{R:\theNombredeR}}{\label{Q:\thequestion}}  Ceci est une question test. Quel est le sigle du cours probabilités à l'UdeM? 
\\\ifthenelse{\boolean{printanswers}}{\textbf{Retour à la question \ref{Q:\theNombredeQ}.}\stepcounter{NombredeQ} \stepcounter{NombredeR}}{\textbf{Voir la \hyperref[R:\thequestion]{solution} à la question.  }}
\begin{solution}
Le sigle est MAT-1720.
\end{solution}
\subsection{Permutations et Combinaisons}
\question \ifthenelse{\boolean{printanswers}}{\label{R:\theNombredeR}}{\label{Q:\thequestion}}
 Ceci est une autre question test. Quel est le nom du cours qui a pour sigle MAT-1720 à L'UdeM? 
\\\ifthenelse{\boolean{printanswers}}{\textbf{Retour à la question \ref{Q:\theNombredeQ}.}\stepcounter{NombredeQ} \stepcounter{NombredeR}}{\textbf{Voir la \hyperref[R:\thequestion]{solution} à la question. }}
\begin{solution}
Le cours est probabilité.
\end{solution}
\end{questions}
\end{document}

It gives the intended results, but leaves an error.

5

There is a major difference in how \parts are set in the article (used by exam) and report classes. Most notably is the that the latter sets an entire page for the part.

From your example code, the only unknown causing the error is \@endpart, which only exists in the report class. Instead, article ends a \part using \@afterheading. So you could add

\makeatletter
\let\@endpart\@afterheading
\makeatother

to your preamble to remove the error, if you're also okay with the eventual typeset result.

enter image description here

5

You can use \uplevel macro provided by exam class.

\uplevel{\centering\Huge\bfseries Questions}
\addcontentsline{toc}{part}{Questions}

If you wish, you can turn this in to a macro:

\newcommand{\mypart}[1]{%
\phantomsection   %% to make links work
\uplevel{\centering\Huge\bfseries #1}
\addcontentsline{toc}{part}{#1}
}

and use it like

\mypart{Questions}

Full code:

\documentclass[12pt]{exam}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
%\usepackage[francais]{babel}
\usepackage{amsfonts,amsmath,amssymb,amsthm,mathrsfs}
\usepackage{sectsty}
\usepackage{hyperref}

\pagestyle{headandfoot}
\firstpageheadrule
\firstpageheader{Probabilités}{}{MAT-1720}
\firstpagefooter{}{}{\thepage}
\firstpagefootrule
\runningheadrule
\runningheader{Probabilités}{}{MAT-1720}
\runningfooter{Nom du professeur}{}{\thepage}
\runningfootrule
\title{Banque d'exercices pour MAT-1720}
\author{Nom du professeur - Institut}
\date{Automne 2014}

\newcommand{\mypart}[1]{%
\phantomsection
\uplevel{\centering\Huge\bfseries #1}
\addcontentsline{toc}{part}{#1}
}
\begin{document}
\maketitle
\thispagestyle{headandfoot}
\tableofcontents
\newpage
\mypart{Questions}
\noprintanswers
\begin{questions}
\newcounter{NombredeQ}
\setcounter{NombredeQ}{1}
\newcounter{NombredeR}
\setcounter{NombredeR}{1}
\section{ Dénombrement  }
\subsection{Principes de dénombrement}
\question \ifthenelse{\boolean{printanswers}}{\label{R:\theNombredeR}}{\label{Q:\thequestion}}  Ceci est une question test. Quel est le sigle du cours probabilités à l'UdeM?
\\\ifthenelse{\boolean{printanswers}}{\textbf{Retour à la question \ref{Q:\theNombredeQ}.}\stepcounter{NombredeQ} \stepcounter{NombredeR}}{\textbf{Voir la \hyperref[R:\thequestion]{solution} à la question.  }}
\begin{solution}
Le sigle est MAT-1720.
\end{solution}
\subsection{Permutations et Combinaisons}
\question \ifthenelse{\boolean{printanswers}}{\label{R:\theNombredeR}}{\label{Q:\thequestion}}
 Ceci est une autre question test. Quel est le nom du cours qui a pour sigle MAT-1720 à L'UdeM?
\\\ifthenelse{\boolean{printanswers}}{\textbf{Retour à la question \ref{Q:\theNombredeQ}.}\stepcounter{NombredeQ} \stepcounter{NombredeR}}{\textbf{Voir la \hyperref[R:\thequestion]{solution} à la question. }}
\begin{solution}
Le cours est probabilité.
\end{solution}
\newpage
\mypart{Solutions}
\printanswers
\section{ Dénombrement  }
\subsection{Principes de dénombrement}
\question \ifthenelse{\boolean{printanswers}}{\label{R:\theNombredeR}}{\label{Q:\thequestion}}  Ceci est une question test. Quel est le sigle du cours probabilités à l'UdeM?
\\\ifthenelse{\boolean{printanswers}}{\textbf{Retour à la question \ref{Q:\theNombredeQ}.}\stepcounter{NombredeQ} \stepcounter{NombredeR}}{\textbf{Voir la \hyperref[R:\thequestion]{solution} à la question.  }}
\begin{solution}
Le sigle est MAT-1720.
\end{solution}
\subsection{Permutations et Combinaisons}
\question \ifthenelse{\boolean{printanswers}}{\label{R:\theNombredeR}}{\label{Q:\thequestion}}
 Ceci est une autre question test. Quel est le nom du cours qui a pour sigle MAT-1720 à L'UdeM?
\\\ifthenelse{\boolean{printanswers}}{\textbf{Retour à la question \ref{Q:\theNombredeQ}.}\stepcounter{NombredeQ} \stepcounter{NombredeR}}{\textbf{Voir la \hyperref[R:\thequestion]{solution} à la question. }}
\begin{solution}
Le cours est probabilité.
\end{solution}
\end{questions}
\end{document}

enter image description here

enter image description here

If you want to refer to these parts, You can use a newcounter:

\newcounter{mypart}
\setcounter{mypart}{0}
\newcommand{\mypart}[1]{%
\phantomsection
\refstepcounter{mypart}
\label{mypart:#1}
\uplevel{\centering\Huge\bfseries #1}
\addcontentsline{toc}{part}{#1}
}

so that labels are automatically created with (say) {mypart:Questions} when you use \mypart{Questions} and you can use them like

refer~\ref{mypart:Questions} here
  • Thanks! I like the use of the exam class command. It would seems that the reference pointed by the TOC aren't working properly though. – Jean-Sébastien Jun 6 '14 at 0:23
  • @Jean-Sébastien Add a \phantomsection. Answer updated. – user11232 Jun 6 '14 at 0:29
4

You have to patch the \@part command as defined in the article class; it's different than in report.

The simplest way is to use \patchcmd, but this must be done before loading hyperref, which changes the definition of \@part based on what there was before.

\documentclass[12pt]{exam}
\usepackage{lmodern}
\usepackage[T1]{fontenc}    
\usepackage[utf8]{inputenc}     
\usepackage{amsfonts,amsmath,amssymb,amsthm,mathrsfs,fancybox} 
\usepackage{sectsty}
\usepackage{etoolbox}

\makeatletter
\pretocmd{\@part}{\phantomsection}{}{} % for links (requires hyperref)
\patchcmd{\@part}{\m@ne}{\maxdimen}{}{}
\patchcmd{\@part}{\m@ne}{\maxdimen}{}{}
\makeatother
\usepackage{hyperref}

\pagestyle{headandfoot}
\firstpageheadrule
\firstpageheader{Probabilités}{}{MAT-1720}                             
\firstpagefooter{}{}{\thepage}
\firstpagefootrule
\runningheadrule
\runningheader{Probabilités}{}{MAT-1720}  
\runningfooter{Nom du professeur}{}{\thepage}
\runningfootrule
\title{Banque d'exercices pour MAT-1720}
\author{Nom du professeur - Institut}
\date{Automne 2014}
\begin{document}
\maketitle
\thispagestyle{headandfoot}
\tableofcontents
\newpage
\part{Questions}
\noprintanswers
\begin{questions}
\newcounter{NombredeQ}
\setcounter{NombredeQ}{1}
\newcounter{NombredeR}
\setcounter{NombredeR}{1}
\section{ Dénombrement  }
\subsection{Principes de dénombrement}
\question \ifthenelse{\boolean{printanswers}}{\label{R:\theNombredeR}}{\label{Q:\thequestion}}  Ceci est une question test. Quel est le sigle du cours probabilités à l'UdeM? 
\\\ifthenelse{\boolean{printanswers}}{\textbf{Retour à la question \ref{Q:\theNombredeQ}.}\stepcounter{NombredeQ} \stepcounter{NombredeR}}{\textbf{Voir la \hyperref[R:\thequestion]{solution} à la question.  }}
\begin{solution}
Le sigle est MAT-1720.
\end{solution}
\subsection{Permutations et Combinaisons}
\question \ifthenelse{\boolean{printanswers}}{\label{R:\theNombredeR}}{\label{Q:\thequestion}}
 Ceci est une autre question test. Quel est le nom du cours qui a pour sigle MAT-1720 à L'UdeM? 
\\\ifthenelse{\boolean{printanswers}}{\textbf{Retour à la question \ref{Q:\theNombredeQ}.}\stepcounter{NombredeQ} \stepcounter{NombredeR}}{\textbf{Voir la \hyperref[R:\thequestion]{solution} à la question. }}
\begin{solution}
Le cours est probabilité.
\end{solution}
\newpage
\part{Solutions}
\qformat{\shadowbox{\textbf{Solution à l'exercice} \theNombredeQ}  \hfill}
\printanswers
\section{ Dénombrement  }
\subsection{Principes de dénombrement}
\question \ifthenelse{\boolean{printanswers}}{\label{R:\theNombredeR}}{\label{Q:\thequestion}}  Ceci est une question test. Quel est le sigle du cours probabilités à l'UdeM? 
\\\ifthenelse{\boolean{printanswers}}{\textbf{Retour à la question \ref{Q:\theNombredeQ}.}\stepcounter{NombredeQ} \stepcounter{NombredeR}}{\textbf{Voir la \hyperref[R:\thequestion]{solution} à la question.  }}
\begin{solution}
Le sigle est MAT-1720.
\end{solution}
\subsection{Permutations et Combinaisons}
\question \ifthenelse{\boolean{printanswers}}{\label{R:\theNombredeR}}{\label{Q:\thequestion}}
 Ceci est une autre question test. Quel est le nom du cours qui a pour sigle MAT-1720 à L'UdeM? 
\\\ifthenelse{\boolean{printanswers}}{\textbf{Retour à la question \ref{Q:\theNombredeQ}.}\stepcounter{NombredeQ} \stepcounter{NombredeR}}{\textbf{Voir la \hyperref[R:\thequestion]{solution} à la question. }}
\begin{solution}
Le cours est probabilité.
\end{solution}
\end{questions}
\end{document}

The idea is to change the two conditionals \ifnum\c@secnumdepth>\m@ne into \ifnum\c@secnumdepth}>\maxdimen; \m@ne stands for –1, while \maxdimen is the largest expressible number.

enter image description here

  • Thanks. TOC links aren't working though – Jean-Sébastien Jun 6 '14 at 0:35
  • @Jean-Sébastien As usual in these cases \phantomsection helps. Fixed. – egreg Jun 6 '14 at 7:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.