\usepackage{imakeidx} %% Index entries (italic font for files, preformat for code) \newcommand{\hf}[1]{ \index{h90 files!#1} \textit{#1.h90} } \newcommand{\ifile}[1]{\index{Input NetCDF files!#1.nc} \textit{#1.nc} } \newcommand{\jp}[1]{ \index{Model parameters!#1} \texttt{#1} } \newcommand{\key}[1]{ \index[keys]{#1@\texttt{\textbf{key\_#1}}} \texttt{\textbf{key\_#1}}} \newcommand{\mdl}[1]{ \index[modules]{#1@\textit{#1.F90}} \textit{#1.F90} } \newcommand{\nam}[1]{ \index[blocks]{#1@\texttt{\&nam#1}} \forcode{&nam#1} } \newcommand{\np}[1]{ \index[parameters]{#1@\texttt{#1}} \texttt{#1} } \newcommand{\npnew}[2][]{\index[parameters]{#2@\texttt{#2}} \forcode{#2#1} } \newcommand{\rou}[1]{ \index[subroutines]{#1@\texttt{#1}} \texttt{#1} } \indexsetup{toclevel=section, othercode=\small} \makeindex[intoc=true, name=blocks , title=Namelist blocks , columns=3] \makeindex[intoc=true, name=keys , title=CPP keys ] \makeindex[intoc=true, name=modules , title=\fortran\ modules , columns=3] \makeindex[intoc=true, name=parameters , title=Namelist parameters , columns=3] \makeindex[intoc=true, name=subroutines, title=\fortran\ subroutines ]