The custom environment is created in the answer by Niel de Beaudrap here: Assessment table. However I can unfortunately cannot center the table in my tex file.
I have tried to use centering, \begin{center}, minipage and \hfill around the environment and also around tickzpicture but none of it worked.
My document type is report and I want to center this table. Could someone please help me out? Thanks!
Here is the compiled code.
\documentclass[12pt,a4paper]{report}
\usepackage{pbox,tikz}
\usetikzlibrary{matrix,calc,fit,intersections}
%%%%% Here starts the environment
\newlength\criterionwidth % width for criterion table columns
\newlength\labelheight % height for labels for assessment criteria
\newlength\labeldepth % depth for labels for assessment criteria
\newlength\itemcolwidth % width for the left-most column
\newlength\criterionlabelskip % vert. skip between legend and first criterion label
\newlength\criterionlabelindent % left indent for criterion labels from their columns
\newlength\assessmentdiagtopstretch % vert.dist. upwards to pull top of the diagonal
\newlength\assessmentdiagbotstretch % vert.dist. downwards to pull bottom of the diagonal
\newlength\remarkswidth % absolute width of remarks column
\newlength\remarksxsep % inner horiz. separation of remarks from column edge
\setlength\criterionwidth {1.5em}
\setlength\labelheight {3ex}
\setlength\labeldepth {1ex}
\setlength\itemcolwidth {3em}
\setlength\criterionlabelskip {2ex}
\setlength\criterionlabelindent {0ex}
\setlength\assessmentdiagtopstretch {7.5mm}
\setlength\assessmentdiagbotstretch {2mm}
\setlength\remarkswidth {70mm} %reduced remarkswidth so that alignment can be seen better.
\setlength\remarksxsep {1em}
\newcommand\labeltypeface {\itshape} % face for description labels in the table
\newcommand\celltypesize {\footnotesize} % size of evalutation cell contents
\newcommand\remarktypeface {\small} % size of remark cell contents
\makeatletter
\newcount@RemarkCol % Counter for position of the Remarks column
\newtoks@CriterionNameToks % Token list for labels of the criteria to asses
@CriterionNameToks{}
\newcommand\AddCriterion[2]{% Macro to define a new criterion column / label
\edef@tempa{\the@CriterionNameToks}%
\ifx\empty@tempa@CriterionNameToks{{#1}/{#2}}\else
\expandafter@CriterionNameToks\expandafter{\the@CriterionNameToks,{#1}/{#2}}
\fi}
%%% Table Env Definition %%%
\newenvironment{selectionTable}[1]{%
@CriterionNameToks{}%92mm
@RemarkCol=2\relax
#1%
\begin{tikzpicture}
\expandafter\def\expandafter@CriterionNames\expandafter{\the@CriterionNameToks}
\node (CriterionLegend) [inner sep=1em] {\parbox{\paperwidth}{\CriterionLegend}};
\coordinate (Criterion-first-anchor) at ($(CriterionLegend.south west) + (0,-\criterionlabelskip)$);
\def\CriterionAnchor{Criterion-first-anchor}
\foreach \A/\critLabel in \@CriterionNames {
\global\advance\@RemarkCol by 1\relax
\node [anchor=north west, text width=\criterionwidth, minimum height=\labelheight+\labeldepth, inner sep=0pt]
(\A-anchor) at (\CriterionAnchor) {};
\node [anchor=west, text height=\labelheight, text depth=\labeldepth]
(\A-label) at ($(\A-anchor.east) + (\criterionlabelindent,0)$)
{\labeltypeface\critLabel};
\xdef\CriterionAnchor{\A-anchor.south east}%
}
\node [anchor=north west, inner xsep=\remarksxsep, inner ysep=0pt, text height=\labelheight, text depth=\labeldepth,
text width=\remarkswidth-2*\pgfkeysvalueof{/pgf/inner xsep}]
(Remarks-title) at (\CriterionAnchor)
{\labeltypeface\RemarksTitle};
\node [anchor=south west, minimum height=\itemcolwidth,rotate=90]
(ItemTitle) at (Remarks-title.north -| CriterionLegend.west)
{\ItemTitle};
\node [inner sep=0pt, fit=(ItemTitle)(ItemTitle |- CriterionLegend.north)]
(ItemTitle) {};
\def\CriterionAnchor{ItemTitle.west}
\node [anchor=north west, text height=\labelheight, text depth=\labeldepth, inner ysep=0pt]
(ItemHeading) at (ItemTitle.south west) {\ItemHeading};
\foreach \A/\critLabel in \@CriterionNames {%
\node [inner sep=0pt, anchor=south, minimum width=\criterionwidth, text height=\labelheight, text depth=\labeldepth]
(\A-heading) at (ItemHeading.south -| \A-anchor) {\A};
}
\node [anchor=north west, rotate=90, minimum height=\criterionwidth, inner ysep=0pt]
(AssessmentTitle) at (Remarks-title.south east) {\AssessmentTitle};
\node [inner sep=0pt, fit=(AssessmentTitle)] (AssessmentTitle) {};
\node [anchor=north east]
(AssessmentLegend) at (CriterionLegend.north -| AssessmentTitle.east)
{\pbox{\paperwidth}{\AssessmentLegend}};
\def\@GridFinalRow{0}
\matrix [%
anchor=north west, matrix of nodes,%
nodes in empty cells,
inner sep=0pt,
nodes={%
draw=white, inner sep=0pt,
execute at begin node=\celltypesize$,
execute at end node=$\xdef\@GridFinalRow{\pgfmatrixcurrentrow},\iffalse$ Fix some syntax hilighting problems\fi
text height=3ex, text depth=1ex, minimum width=\criterionwidth},
column 1/.style={%
execute at begin node=\expandafter\@gobble\@gobble,
execute at end node=\@gobble,
nodes={minimum width=\itemcolwidth}},
column \the\@RemarkCol/.style={%
execute at begin node=\remarktypeface\expandafter\@gobble\@gobble,
execute at end node=\@gobble,
nodes={%
minimum width=\remarkswidth,
inner xsep=\remarksxsep,
text width=\remarkswidth-2*\pgfkeysvalueof{/pgf/inner xsep}}}
] (Grid) at (ItemHeading.south west)
\bgroup
}{%
\\ \egroup;
\expandafter\ifnum\@GridFinalRow>0
\foreach \row in {1,...,\@GridFinalRow} {%
\draw (Grid-\row-1.south west) -- (Grid-\row-1.south west -| Grid.east);
}
\fi
\draw (ItemTitle.north west) -- (AssessmentLegend.north east)
-- (AssessmentTitle.south east)
-- (ItemHeading.south west) -- cycle;
\draw (Grid.north east) -- (Grid.south east) -- (Grid.south west) -- (Grid.north west);
\draw (CriterionLegend.north west) -- (Criterion-first-anchor);
\draw [name path=AssessmentLegendBoundary]
(AssessmentLegend.north west) -- ($(AssessmentLegend.south west) + (0mm,\assessmentdiagtopstretch)$)
-- ($(AssessmentTitle.north west) + (0mm,-\assessmentdiagbotstretch)$)
-- (AssessmentTitle.south west |- Grid.south);
\path [name path=Remarks-north-boundary] (Remarks-title.north west) -- ($(Remarks-title.north east) + (\paperwidth,0mm)$);
\path [name intersections={of=AssessmentLegendBoundary and Remarks-north-boundary, by={Remarks-north-east-boundary}}];
\draw (Remarks-north-east-boundary) -- (Remarks-title.north west) -- (Remarks-title.north west |- Grid.south);
\foreach \A/\critLabel in \@CriterionNames {%
\path [name path=\A-north-boundary] (\A-anchor.north west) -- ($(\A-anchor.north east) + (\paperwidth,0mm)$);
\path [name intersections={of=AssessmentLegendBoundary and \A-north-boundary, by={\A-north-east-boundary}}];
\draw (\A-north-east-boundary) -- (\A-anchor.north west) -- (\A-anchor.north west |- Grid.south);
}
\end{tikzpicture}%
}
\makeatother
%%% Customisation %%%
\newcommand\CriterionLegend{%
%
Assess solution alternatives according \
to \underline{\MakeUppercase{selection criteria}}: \[2ex]
\begin{tabular}{@{(}c@{)\quad}l}
$+$ & Yes
\
$-$ & No
\
? & Lack of information
\
! & Check list of requirement
\end{tabular}
%
}
\newcommand\AssessmentLegend{%
%
\begin{tabular}{c@{\quad}l}
\multicolumn{2}{c}{\MakeUppercase{Decision making}}
\
\hline
& Mark the solution \ & alertnatives:
\[2ex]
($+$) & Pursue solution further
\
($-$) & Solution eliminated
\
(?) & Acquire information \& (reassess solution)
\
(!) & check changes in list \& of requirements
\end{tabular}
%
}
\begin{document}
\begin{center}
\begin{table}
\caption{Selection list for different things according to pahl beitz}
\centering \par
\begin{selectionTable}{%
\newcommand\ItemTitle {Enter solution alternatives:}
\newcommand\ItemHeading {~Nr.}
\newcommand\AssessmentTitle {Decision}
\newcommand\RemarksTitle {Comments (notes, reasons)}
\AddCriterion {A}{Vertrglichkeit gegeben}
\AddCriterion {B}{Forderungen der Anforderungsliste erf\"ult}
\AddCriterion {C}{Grundstzlich realisiebar}
\AddCriterion {D}{Aufwand zulassig}
\AddCriterion {E}{Unmittelbare Sicherheitstechnik gegeben}
\AddCriterion {F}{Im eigenen Bereich bevorzugt}
}%
1 & + & + & + & ? & & & Anzahl er Messstellen & ? \\
2 & + & - & & & & & Unterbringung der Masse & - \\
3 & - & & & & & & Radioaktivit\"at & - \\
4 & + & + & + & + & & (+) & (Weiterentwicklung bisheriger L\"osungen) & + \\
5 & + & + & + & + & & & & + \\
6 & - & & & & & & Fl\"ussigkeit nicht Leitend & - \\
7 & + & + & + & + & & & & + \\
8 & + & + & + & + & & & s.Lv 7 & +
\end{selectionTable}
\end{table}
\end{center}
\end{document}
minipage, you may have to add\parat the end in order for\centeringor any sort of formatting to work. Your table might as well be too wide. – Celdor Dec 23 '22 at 11:04centerenvironment has to be removed. Anyway, there's something wrong in the code: it produces an oversized object and the more width I assign to\textwidththe more oversized the object becomes. With standard text width the overfull is 551pt; with A3 paper it becomes about 600pt. With A2 paper it's 700pt and so on. – egreg Dec 23 '22 at 17:40