I am using my own class MyReportClass
to write a report. I have taken inspiration from this answer to redefine the \includegraphics
command inside the class in order to use the example-image-a
in case the input image does not exist.
In the class I also have the \graphicspath
command in order to set the folder where I am supposed to have all the images that I want to use. However this command seems not to work properly, since for all \includegraphics
command that I use in the main code the images are not found unless I write their entire path (that should be unnecessary). I think that this has to do with the redefinition of \includegraphics
in the class, since without such redefinition the \graphicspath
command works fine.
What I would like to achieve is the following:
\graphicspath
should allow me to just write the image name when using\includegraphics
in the main code (example:\includegraphics[width=0.85\textwidth]{myimage.eps}
);- the command
\frontcoverpic
defined in the class and used in the main code should take as input only the image name and find the image in the path given by\graphicspath
(example:\frontcoverpic{mycoverpic.eps}
, withmycoverpic.eps
being in the folder defined by\graphicspath
); - in the commands
\makemargins
and\makecoverpage
defined in the class I should be able to use\includegraphics
pointing at a different folder w.r.t. to the one indicated by\graphicspath
(example:\includegraphics[width=0.25\textwidth]{./logos/logo.pdf}
with./logos/
being a different path w.r.t. the one given by\graphicspath
); - in all cases described above, when the image is not found the
example-image-a
should be used.
The class:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{MyReportClass}
\LoadClass[a4paper,12pt]{article} % Class of the document
%--------------------- Packages ------------------------
\RequirePackage[english]{babel} % Langueage of the document
\RequirePackage[utf8]{inputenc} % Special characters
\RequirePackage[section]{placeins} % For format of sections
\RequirePackage[T1]{fontenc} % Letters not included in UTF-8
\RequirePackage{mathtools} % Equations and mathematic symbols
\RequirePackage{siunitx} % Scientific notation
\RequirePackage{float} % Images formatting
\RequirePackage{graphicx} % Insert figures
\RequirePackage{tikz}
\RequirePackage[justification=centering]{caption} % Centred legends
\RequirePackage{subcaption}
\RequirePackage{wallpaper}
\RequirePackage{nomencl}
\RequirePackage{fancyhdr}
\RequirePackage{url}
\RequirePackage[pdfencoding=auto,psdextra]{hyperref} % Legends in sub-figures
\RequirePackage{amsmath,bm,amssymb}
\RequirePackage{amsfonts}
\RequirePackage{bookmark} % Faster updated bookmarks
\RequirePackage{textcomp}
% Package for nice tables
\RequirePackage{booktabs,makecell}
\newcommand{\ra}[1]{\renewcommand{\arraystretch}{#1}}
\sisetup{
% output-decimal-marker = {,},
detect-weight,
mode = text
}
\newcommand*{\specialcell}[2][b]{%
\begin{tabular}[#1]{@{}c@{}}#2\end{tabular}%
}
\newcommand*{\specialcellbold}[2][b]{%
\bfseries
\sisetup{text-rm = \bfseries}%
\begin{tabular}[#1]{@{}c@{}}#2\end{tabular}%
}
\newcommand*{\leftspecialcell}[2][b]{%
\begin{tabular}[#1]{@{}l@{}}#2\end{tabular}%
}
%Package for labelling matrix rows and columns
\RequirePackage{blkarray}
% Package to adjust labelled matrices
\RequirePackage{makebox,bigstrut,relsize}
% Page configuration
\RequirePackage{geometry}
\geometry{a4paper,hscale=0.75,vscale=0.8}
%Package to modify chapter header
%\RequirePackage{titlesec}
%Color for sections head
\RequirePackage{color}
\definecolor{tdblue}{RGB}{0,174,239}
\RequirePackage{sectsty}
\sectionfont{\color{tdblue}}
\subsectionfont{\color{tdblue}}
\subsubsectionfont{\color{tdblue}}
%MATLAB command
\RequirePackage{xspace}
\newcommand{\MATLAB}{\textsc{Matlab}\xspace}
%Typesetting a MATLAB code
\RequirePackage[T1]{fontenc}
\RequirePackage{bigfoot} % to allow verbatim in footnote
\RequirePackage[numbered,framed]{matlab-prettifier}
\RequirePackage{filecontents}
\let\ph\mlplaceholder % shorter macro
\lstMakeShortInline"
\lstset{
style = Matlab-editor,
basicstyle = \mlttfamily,
escapechar = ",
mlshowsectionrules = true,
}
% Per-section figure, equation, table and lstlisting numbering
\RequirePackage{chngcntr}
\counterwithin{figure}{section}
\counterwithin{equation}{section}
\counterwithin{table}{section}
\AtBeginDocument{\counterwithin{lstlisting}{section}}
% Package for references with numbers
\bibliographystyle{apsrev4-1}
\RequirePackage[numbers]{natbib}
\setcitestyle{numbers}
% Set graphics path
\graphicspath{{./figures/}}
%-------------- Define command for missing figures ------------
\let\StandardIncludeGraphics\includegraphics%
\renewcommand{\includegraphics}[2][]{%
\IfFileExists{#2}{%
\StandardIncludeGraphics[#1]{#2}%
}{%
\StandardIncludeGraphics[#1]{example-image-a}}%
}% End of command
%-------------------- Report information ----------------------
\newcommand{\coursecode}[1]{\renewcommand{\coursecode}{#1}}
\newcommand{\coursename}[1]{\renewcommand{\coursename}{#1}}
\newcommand{\instructorname}[1]{\renewcommand{\instructorname}{#1}}
\newcommand{\reporttitle}[1]{\renewcommand{\reporttitle}{#1}}
\newcommand{\reportauthor}[3]{\renewcommand{\reportauthor}{#1 {\scshape #2} \dots\dots {\bfseries #3}}}
\newcommand{\frontcoverpic}[1]{\renewcommand{\frontcoverpic}{\includegraphics[width=0.5\textwidth]{#1}}}
\newcommand{\makemargins}{
\makenomenclature
\pagestyle{fancy}
\fancyheadoffset{1cm}
\setlength{\headheight}{2cm}
\lhead{\includegraphics[width=0.25\textwidth]{./logos/logo.pdf}} % Set image at top of the page
\rhead{\nouppercase{\leftmark}}
\rfoot{\thepage}
\cfoot{\textbf{\reporttitle}}
\lfoot{\coursecode}
}
\newcommand{\makecoverpage}{
\begin{titlepage}
\centering % Center the content
\includegraphics[width=0.4\textwidth]{./logos/logo_blue.pdf}\par\vspace{1cm} % Insert logo
{\scshape\LARGE Delft University of Technology \par} % Name of the university
\vspace{1cm} % Vertical space of 1.5 cm
{\scshape\Large \coursename \\ \large \coursecode \\ \normalsize \instructorname \par}
\vspace{0.5cm} % Vertical space of 1 cm
\rule{\linewidth}{0.2 mm} \\[0.4 cm]
{\huge\bfseries \reporttitle \par} \
\rule{\linewidth}{0.2 mm} \\[1 cm]
\vspace{0.5cm}
\frontcoverpic\\[1.5 cm]
\normalsize \reportauthor\\
\vfill
{\large \today\par} % Visualization of the date
\end{titlepage}
}
\newcommand{\initialise}{
\makemargins
\makecoverpage
\tableofcontents
\newpage
}
% Define newcommand for norm
\newcommand{\norm}[1]{\left\lVert#1\right\rVert}
Example of a main code:
\documentclass{MyReportClass}
\begin{document}
\reporttitle{My Title}
\coursecode{1234}
\coursename{My Course}
\instructorname{Instructor Name}
\reportauthor{Name}{Surname}{1234}
\frontcoverpic{mycoverpic.eps}
\initialise
\section{A section}
\begin{figure}[h]
\centering
\includegraphics[width=0.85\textwidth]{myimage.eps}
\caption{My image}
\end{figure}
\end{document}
\ifFileExists
doesn't know about\graphicspath
. That's why your macros only work when you don't use\graphicspath
to find the file.