0

I have the following code within my thesis in Latex.

\documentclass[12pt]{ociamthesis}
\usepackage{hyperref}
\usepackage{cite}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{subfigure}
\usepackage{graphicx}
\usepackage{textcomp}
\usepackage{xcolor}
\usepackage{algpseudocode}
\usepackage{textcomp}
\usepackage{gensymb}
\usepackage{caption}%for subfloat images
\usepackage[ruled,linesnumbered]{algorithm2e}
\newenvironment{program}[1][htb]
{\renewcommand{\algorithmcfname}{Program}% Update algorithm name
    \begin{algorithm}[#1]%
    }{\end{algorithm}}
\usepackage{commath}

\usepackage{xr} \externaldocument{chapter1}

\title........

When I build the aforementioned latex file it gives me the following error:

Command \degree already defined. \newcommand\degree{}

Can someone let m know how to get rid of the error? (Which package is causing this apart from 'gensymb'?)

Appendix::

The ociamthesis.cls contains the following code:

%
% ociamthesis v2.2
% By Keith A. Gillow <gillow@maths.ox.ac.uk>
% Version 1.0 released 26/11/1997
%-------------------------- identification ---------------------
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{ociamthesis}[2010/11/22 v2.2 OCIAM thesis class]
%-------------------------- initial code -----------------------
\def\logoversion{squarelogo}
\DeclareOption{beltcrest}{\def\logoversion{beltcrest}}
\DeclareOption{shieldcrest}{\def\logoversion{shieldcrest}}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
\ProcessOptions\relax
\LoadClass[a4paper]{report}
% As an alternative to the above could use next line for twosided output
%\LoadClass[a4paper,twoside,openright]{report}

\RequirePackage{graphicx} % needed for latest frontpage logo \RequirePackage{ifthen} % needed for option parsing for logo

\raggedbottom

%define the default submitted text \newcommand{\submittedtext}{{A thesis submitted to the University of Essex in fulfillment of the requirement for the degree of}}

% % DECLARATIONS % % These macros are used to declare arguments needed for the % construction of the title page and other preamble.

% The year and term the thesis is submitted \def\degreedate#1{\gdef@degreedate{#1}} % The full (unabbreviated) name of the degree \def\degree#1{\gdef@degree{#1}} % The name of your Oxford college (e.g. Christ Church, Pembroke) \def\college#1{\gdef@college{#1}}

% % Setup choosen crest/logo %

\ifthenelse{\equal{\logoversion}{shieldcrest}}% { % Traditional Oxford shield crest %Using latex metafont (Mathematical Institute system) \font\crestfont=oxcrest40 scaled\magstep3 \def\logo{{\crestfont \char1}} %For comlab system replace 1st line above with %\font\crestfont=crest scaled\magstep3 }{}

\ifthenelse{\equal{\logoversion}{beltcrest}}% { % Newer Oxford Belt crest %Using latex metafont (Mathematical Institute system) \font\beltcrestfont=oxbeltcrest \def\logo{{\beltcrestfont \char0}} %For comlab system replace 1st line above with %\font\beltcrestfont=newcrest }{}

\ifthenelse{\equal{\logoversion}{squarelogo}}% { % Latest Logo, Square version (the default!) % you need an oxlogo.eps or oxlogo.pdf file as appropriate \def\logo{{\includegraphics[width=42mm]{essexlogo.jpg}}} }{}

% % Define text area of page and margin offsets % \setlength{\topmargin}{0.0in} \setlength{\oddsidemargin}{0.33in} \setlength{\evensidemargin}{-0.08in} \setlength{\textheight}{9.0in} \setlength{\textwidth}{6.0in}

% % Environments %

% This macro define an environment for front matter that is always % single column even in a double-column document.

\newenvironment{alwayssingle}{% @restonecolfalse \if@twocolumn@restonecoltrue\onecolumn \else\if@openright\cleardoublepage\else\clearpage\fi \fi}% {\if@restonecol\twocolumn \else\newpage\thispagestyle{empty}\fi}

%define title page layout \renewcommand{\maketitle}{% \begin{alwayssingle} \renewcommand{\footnotesize}{\small} \renewcommand{\footnoterule}{\relax} \thispagestyle{empty} \null\vfill \begin{center} { \Huge {\bfseries {@title}} \par} {\large \vspace{40mm} {\logo \par} \vspace{25mm}} {{\Large @author} \par} {\large \vspace{1ex} {{@college} \par} \vspace{1ex} {University of Essex \par} \vspace{25mm} {{\submittedtext} \par} \vspace{1ex} {\it {@degree} \par} \vspace*{2ex} {@degreedate}} \end{center} \null\vfill \end{alwayssingle}}

% DEDICATION % % The dedication environment makes sure the dedication gets its % own page and is set out in verse format.

\newenvironment{dedication} {\begin{alwayssingle} \thispagestyle{empty} \begin{center} \vspace*{1.5cm} {\LARGE } \end{center} \vspace{0.5cm} \begin{verse}\begin{center}} {\end{center}\end{verse}\end{alwayssingle}}

% ACKNOWLEDGEMENTS % % The acknowledgements environment puts a large, bold, centered % "Acknowledgements" label at the top of the page. The acknowledgements % themselves appear in a quote environment, i.e. tabbed in at both sides, and % on its own page.

\newenvironment{acknowledgements} {\begin{alwayssingle} \thispagestyle{empty} \begin{center} \vspace*{1.5cm} {\Large \bfseries Acknowledgements} \end{center} \vspace{0.5cm} \begin{quote}} {\end{quote}\end{alwayssingle}}

% The acknowledgementslong environment puts a large, bold, centered % "Acknowledgements" label at the top of the page. The acknowledgement itself % does not appears in a quote environment so you can get more in.

\newenvironment{acknowledgementslong} {\begin{alwayssingle} \thispagestyle{empty} \begin{center} \vspace*{1.5cm} {\Large \bfseries Acknowledgements} \end{center} \vspace{0.5cm}} {\end{alwayssingle}}

% STATEMENT OF ORIGINALITY (AS SUGGESTED BY GSW) % % The originality environment puts a large, bold, centered % "Statement of originality" label at the top of the page. The statement % of originality itself appears in a quote environment, i.e. tabbed in at % both sides, and on its own page.

\newenvironment{originality} {\begin{alwayssingle} \thispagestyle{empty} \begin{center} \vspace*{1.5cm} {\Large \bfseries Statement of Originality} \end{center} \vspace{0.5cm} \begin{quote}} {\end{quote}\end{alwayssingle}}

% The originalitylong environment puts a large, bold, centered % "Statement of originality" label at the top of the page. The statement % of originality itself does not appears in a quote environment so you can % get more in.

\newenvironment{originalitylong} {\begin{alwayssingle} \thispagestyle{empty} \begin{center} \vspace*{1.5cm} {\Large \bfseries Statement of Originality} \end{center} \vspace{0.5cm}} {\end{alwayssingle}}

%ABSTRACT % %The abstract environment puts a large, bold, centered "Abstract" label at %the top of the page. The abstract itself appears in a quote environment, %i.e. tabbed in at both sides, and on its own page.

\renewenvironment{abstract} {\begin{alwayssingle} \thispagestyle{empty} \begin{center} \vspace*{1.5cm} {\Large \bfseries Abstract} \end{center} \vspace{0.5cm} \begin{quote}} {\end{quote}\end{alwayssingle}}

%The abstractlong environment puts a large, bold, centered "Abstract" label at %the top of the page. The abstract itself does not appears in a quote %environment so you can get more in.

\newenvironment{abstractlong} {\begin{alwayssingle} \thispagestyle{empty} \begin{center} \vspace*{1.5cm} {\Large \bfseries Abstract} \end{center} \vspace{0.5cm}} {\end{alwayssingle}}

%The abstractseparate environment is for running of a page with the abstract %on including title and author etc as required to be handed in separately

\newenvironment{abstractseparate} {\begin{alwayssingle} \thispagestyle{empty} \vspace{-1in} \begin{center} { \Large {\bfseries {@title}} \par} {{\large \vspace{1ex} @author} \par} {\large \vspace{1ex} {{@college} \par} {University of Oxford \par} \vspace{1ex} {{\it \submittedtext} \par} {\it {@degree} \par} \vspace*{2ex} {@degreedate}} \end{center}} {\end{alwayssingle}}

%ROMANPAGES % % The romanpages environment set the page numbering to lowercase roman one % for the contents and figures lists. It also resets % page-numbering for the remainder of the dissertation (arabic, starting at 1).

\newenvironment{romanpages} {\cleardoublepage\setcounter{page}{1}\renewcommand{\thepage}{\roman{page}}} {\cleardoublepage\renewcommand{\thepage}{\arabic{page}}\setcounter{page}{1}}

  • Perhaps we can start with a location of ociamthesis.cls. Where can we find your \documentclass? – Werner Nov 18 '20 at 00:36
  • Welcome to TeX.SE. If you've established that gensymb is causing the error, then you can also comment out the other packages to see if the error remains. Do you still have the error with only ociamthesis and gensymb? Maybe you don't need gensymb? – Teepeemm Nov 18 '20 at 00:39
  • @Teepeemm I commented the gensymb and after that this error doesn't happen but a different error pops up: "Missing control sequence inserted. ...& }}{82}{figure.caption.40}" This error doesn't happen if I use gensymb package – Somdip Dey Nov 18 '20 at 00:45
  • 1
    The \degree macro is defined in your document class. The source code is here: https://www.maths.ox.ac.uk/system/files/legacy/2894/ociamthesis.cls. That definition clashes with the definition in gensymb. Also, note that you're loading textcomp twice (although that's not the problem here). – LaTeXereXeTaL Nov 18 '20 at 00:47
  • 1
    Don't mix algpseudocode (from algorithmicx) and algorithm2e; they're not compatible. – Werner Nov 18 '20 at 00:48
  • @LaTeXereXeTaL so how to deal with this issue? I am asking because if I comment gensymb then it is giving me this error:" Missing control sequence inserted. ...& CGM-DVFS\relax }}{82}{figure.caption.40}" specific error in this line: \contentsline {figure}{\numberline {8.3}{\ignorespaces Average power consumption (Watts) and average peak temperature (\gdef C{C}) while executing different applications on different methodologies: performance, interactive, MRPI, RewardProfiler & CGM-DVFS\relax }}{82}{figure.caption.40} – Somdip Dey Nov 18 '20 at 00:49
  • @Werner provides a workaround in his answer. – LaTeXereXeTaL Nov 18 '20 at 00:50
  • @Werner thank you for the suggestion. BTW could you plz let me know how to use algpseudocode (from algorithmicx) and algorithm2e? Actually one chapter is dependent on algpseudocode and the other chapter on algorithm2e. – Somdip Dey Nov 18 '20 at 00:54
  • 1
    @SomdipDey: You can load algorithm2e with the option algo2e which will let you use algorithm2e notation/syntax inside an algorithm2e environment. Then you can load \usepackage{algorithm,algpseudocode} and use algorithmicx-style syntax inside an algorithm environment. That should work... I assume. – Werner Nov 18 '20 at 00:59
  • @Werner so, will that we something like this: \usepackage[ruled,linesnumbered,algo2e]{algorithm2e} I usually just use syntaxes of Latex without getting in-depth knowledge of it. I apologize for the silly question – Somdip Dey Nov 18 '20 at 01:02
  • 1
    @SomdipDey: Looks like that should work. – Werner Nov 18 '20 at 01:06
  • @Werner Thank you – Somdip Dey Nov 18 '20 at 01:07
  • Off-topic: Your code loads subfigure, a deprecated package. In its place, load either subfig or subcaption. – Mico Nov 18 '20 at 02:16

1 Answers1

1

Your documentclass ociamthesis.cls defined \degree as "The full (unabbreviated) name of the degree", amongst other declarations:

% DECLARATIONS
%
% These macros are used to declare arguments needed for the
% construction of the title page and other preamble.

% The year and term the thesis is submitted \def\degreedate#1{\gdef@degreedate{#1}} % The full (unabbreviated) name of the degree \def\degree#1{\gdef@degree{#1}} % The name of your Oxford college (e.g. Christ Church, Pembroke) \def\college#1{\gdef@college{#1}}

It is used to create the title (page) of the thesis, so you can't really go without it.

You can circumvent this via

\documentclass[12pt]{ociamthesis}
\let\olddegree\degree  % Store \degree in \olddegree
\let\degree\relax      % Remove definition of \degree
% ... load other packages
\usepackage{gensymb}   % This creates \degree
\let\degreesymb\degree % Store new \degree in \degreesymb
\let\degree\olddegree  % Restore \degree to its old definition \olddegree
% ... rest of your document

Note that loading hyperref should be left as late as possible. See Which packages should be loaded after hyperref instead of before?

Werner
  • 603,163