% Feature module: tables

\ifdefined\NextFeatureTablesLoaded
  \endinput
\fi
\def\NextFeatureTablesLoaded{1}

\RequirePackage{booktabs}
\RequirePackage{longtable}
\RequirePackage{array}
\RequirePackage{graphicx}
\RequirePackage{tabularx}
\RequirePackage{multirow}
\RequirePackage{threeparttable}
\RequirePackage{ragged2e}
\RequirePackage{pdflscape}
\RequirePackage{calc}
\RequirePackage{afterpage}

\makeatletter
\@ifpackageloaded{caption}{}{%
  \@ifundefined{caption@documentclass}{\def\caption@documentclass{standard}}{}
  \RequirePackage{caption}%
}
\captionsetup[table]{skip=6pt}
\makeatother

\newcommand\TablesSetup{%
  \renewcommand{\arraystretch}{1.18}%
  \setlength{\tabcolsep}{6pt}%
  \setlength{\aboverulesep}{0.35ex}%
  \setlength{\belowrulesep}{0.35ex}%
  \setlength{\belowbottomsep}{0.6ex}%
}
\AtBeginDocument{\TablesSetup}

\newcolumntype{L}{>{\RaggedRight\arraybackslash}X}
\newcolumntype{C}{>{\Centering\arraybackslash}X}
\newcolumntype{R}{>{\RaggedLeft\arraybackslash}X}
\newcolumntype{P}[1]{>{\RaggedRight\arraybackslash}p{#1}}
\newcolumntype{M}[1]{>{\Centering\arraybackslash}p{#1}}
\newcolumntype{B}[1]{>{\RaggedLeft\arraybackslash}p{#1}}
\newcolumntype{Y}[1]{>{\RaggedRight\arraybackslash}p{#1}}

\NewDocumentEnvironment{TableInlineFit}{m +b}{%
  \begin{center}%
  \scriptsize
  \setlength{\tabcolsep}{4pt}%
  \renewcommand{\arraystretch}{1.15}%
  \resizebox{\textwidth}{!}{%
    \begin{tabular}{#1}%
      #2%
    \end{tabular}%
  }%
  \end{center}%
}{}

\newenvironment{TableLong}[1]{%
  \begingroup
  \scriptsize
  \setlength{\tabcolsep}{4pt}%
  \renewcommand{\arraystretch}{1.15}%
  \begin{longtable}{#1}%
}{%
  \end{longtable}%
  \endgroup
}

\newenvironment{TableBook}[4][htbp]{%
  \begin{table}[#1]\centering
  \if\relax\detokenize{#3}\relax\else\caption{#3}\fi
  \if\relax\detokenize{#4}\relax\else\label{#4}\fi
  \begin{tabular}{@{}#2@{}}%
  \toprule
}{%
  \bottomrule
  \end{tabular}%
  \end{table}
}

\NewDocumentEnvironment{TableBookX}{ O{htbp} m m m +b }{%
  \begin{table}[#1]\centering
  \if\relax\detokenize{#3}\relax\else\caption{#3}\fi
  \if\relax\detokenize{#4}\relax\else\label{#4}\fi
  \begin{tabularx}{\linewidth}{@{}#2@{}}%
  \toprule
  #5%
  \bottomrule
  \end{tabularx}%
  \end{table}
}{}

\newenvironment{TableBookNotes}[4][htbp]{%
  \begin{table}[#1]\centering
  \begin{threeparttable}
  \if\relax\detokenize{#3}\relax\else\caption{#3}\fi
  \if\relax\detokenize{#4}\relax\else\label{#4}\fi
  \begin{tabular}{@{}#2@{}}%
  \toprule
}{%
  \bottomrule
  \end{tabular}%
  \end{threeparttable}
  \end{table}
}

\newenvironment{NiceBooktable}[4][htbp]{%
  \begin{TableBook}[#1]{#2}{#3}{#4}%
}{%
  \end{TableBook}%
}

\NewDocumentEnvironment{NiceBooktableX}{ O{htbp} m m m +b }{%
  \begin{table}[#1]\centering
  \if\relax\detokenize{#3}\relax\else\caption{#3}\fi
  \if\relax\detokenize{#4}\relax\else\label{#4}\fi
  \begin{tabularx}{\linewidth}{@{}#2@{}}%
  \toprule
  #5%
  \bottomrule
  \end{tabularx}%
  \end{table}
}{}

\newenvironment{NiceBooktableNotes}[4][htbp]{%
  \begin{TableBookNotes}[#1]{#2}{#3}{#4}%
}{%
  \end{TableBookNotes}%
}
