我的 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........
当我构建上述乳胶文件时,出现以下错误:
命令 \degree 已定义。\newcommand\degree{}
有人可以告诉我如何消除这个错误吗?(除了‘gensymb’之外,哪个包导致了这个问题?)
附录::
ociamthesis.cls包含以下代码:
%
% ociamthesis v2.2
% By Keith A. Gillow <[email protected]>
% 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}}
答案1
您的文件类别ociamthesis.cls
定义\degree
为“学位的完整(未缩写)名称”,其中包括以下声明:
% 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}}
它用于创建论文的标题(页面),因此你真的不能没有它。
你可以通过以下方式规避这个问题
\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
请注意加载hyperref
应尽可能晚地离开。参见hyperref
哪些包应该在之后而不是之前加载?