有没有办法使这个评估表自定义环境的输出居中?

有没有办法使这个评估表自定义环境的输出居中?

自定义环境是在答案中创建的尼尔·德·博德拉普这里:评估表。然而不幸的是我无法将表格置于我的 tex 文件的中央。

我曾尝试在环境周围以及 tickzpicture 周围使用centering、、\begin{center}minipage,但都没有起作用。\hfill

我的文档类型是报告,我想让这个表格居中。有人能帮我吗?谢谢!

这是编译后的代码。

\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}

相关内容