docs(design): resync House of Quality preamble to canonical reference
The embedded preamble had drifted from the qfd skill's reference: it lacked the title-block machinery, section comments, and sizing notes. Replace it verbatim so future edits don't fight stale scaffolding.
This commit is contained in:
74
DESIGN.md
74
DESIGN.md
@@ -127,8 +127,26 @@ Strength of each Component in realising each Function (9/3/1/blank). Component l
|
|||||||
% =====================================================================
|
% =====================================================================
|
||||||
% QFD "House of Quality" preamble
|
% QFD "House of Quality" preamble
|
||||||
% =====================================================================
|
% =====================================================================
|
||||||
|
% Usage:
|
||||||
|
% \begin{document}
|
||||||
|
% \begin{qfdhouse}
|
||||||
|
% % WHATs at ({\qfdLeftEdge + 0.1}, {-\r + 0.5})
|
||||||
|
% % Importance at ({-\qfdImpW/2}, {-\r + 0.5})
|
||||||
|
% % HOWs rotated 90 at ({\c - 0.5}, 0.15)
|
||||||
|
% % Relations in cells with [qfdrel/S], [qfdrel/M], [qfdrel/W]
|
||||||
|
% % Roof correlations at (C-i-j)
|
||||||
|
% % Perception markers at ({\qfdNH + (s+0.5)*\qfdCmpW/6}, {-\r + 0.5})
|
||||||
|
% % Basement: target / difficulty / abs weight / rel weight, per HOW
|
||||||
|
% \end{qfdhouse}
|
||||||
|
% \end{document}
|
||||||
|
%
|
||||||
|
% NB: in node text, use $<$ / $>$ for less-than / greater-than under
|
||||||
|
% OT1 encoding; bare < and > render as Spanish ¡ ¿.
|
||||||
|
% =====================================================================
|
||||||
|
|
||||||
\usetikzlibrary{arrows.meta, positioning, shapes.geometric, shapes.misc, calc, fit, backgrounds}
|
\usetikzlibrary{arrows.meta, positioning, shapes.geometric, shapes.misc, calc, fit, backgrounds}
|
||||||
|
|
||||||
|
% Toggles — flip before \begin{qfdhouse} to hide sections.
|
||||||
\newif\ifqfdshowroof \qfdshowrooftrue
|
\newif\ifqfdshowroof \qfdshowrooftrue
|
||||||
\newif\ifqfdshowbasement \qfdshowbasementtrue
|
\newif\ifqfdshowbasement \qfdshowbasementtrue
|
||||||
\newif\ifqfdshowcompetitive \qfdshowcompetitivetrue
|
\newif\ifqfdshowcompetitive \qfdshowcompetitivetrue
|
||||||
@@ -136,27 +154,36 @@ Strength of each Component in realising each Function (9/3/1/blank). Component l
|
|||||||
\newif\ifqfdshowimportance \qfdshowimportancetrue
|
\newif\ifqfdshowimportance \qfdshowimportancetrue
|
||||||
\newif\ifqfdshowcorrlegend \qfdshowcorrlegendtrue
|
\newif\ifqfdshowcorrlegend \qfdshowcorrlegendtrue
|
||||||
\newif\ifqfdshowevallegend \qfdshowevallegendtrue
|
\newif\ifqfdshowevallegend \qfdshowevallegendtrue
|
||||||
|
\newif\ifqfdshowtitle \qfdshowtitletrue % title block above the roof
|
||||||
|
|
||||||
\def\qfdNW{5}
|
% Dimensions — override before \begin{qfdhouse} to resize.
|
||||||
\def\qfdNH{5}
|
\def\qfdNW{5} % number of WHATs (rows)
|
||||||
\def\qfdWhatW{4.0}
|
\def\qfdNH{5} % number of HOWs (columns)
|
||||||
\def\qfdImpW{0.9}
|
\def\qfdWhatW{4.0} % width of WHATs column
|
||||||
\def\qfdCmpW{3}
|
\def\qfdImpW{0.9} % width of importance column
|
||||||
\def\qfdHdrH{2.6}
|
\def\qfdCmpW{3} % width of perception zone
|
||||||
\def\qfdBasementN{4}
|
\def\qfdHdrH{2.6} % height of column-titles band
|
||||||
|
\def\qfdBasementN{4} % number of basement rows
|
||||||
|
|
||||||
|
% Titles & labels — override before \begin{qfdhouse}.
|
||||||
\def\qfdWhatsTitle{Customer needs}
|
\def\qfdWhatsTitle{Customer needs}
|
||||||
\def\qfdImpTitle{Imp.\ \%}
|
\def\qfdImpTitle{Imp.\ \%}
|
||||||
\def\qfdPerceptionTitle{Comparative evaluation}
|
\def\qfdPerceptionTitle{Comparative evaluation}
|
||||||
\def\qfdPoorLabel{poor}
|
\def\qfdPoorLabel{poor}
|
||||||
\def\qfdExcellentLabel{excellent}
|
\def\qfdExcellentLabel{excellent}
|
||||||
\def\qfdAltOneLabel{Our product}
|
\def\qfdAltOneLabel{Our product} % highlighted in legend
|
||||||
\def\qfdAltTwoLabel{Competitor A}
|
\def\qfdAltTwoLabel{Competitor A}
|
||||||
\def\qfdAltThreeLabel{Competitor B}
|
\def\qfdAltThreeLabel{Competitor B}
|
||||||
\def\qfdRelTitle{Relation}
|
\def\qfdRelTitle{Relation}
|
||||||
\def\qfdCorrTitle{Correlation}
|
\def\qfdCorrTitle{Correlation}
|
||||||
\def\qfdEvalTitle{Evaluation}
|
\def\qfdEvalTitle{Evaluation}
|
||||||
|
|
||||||
|
% Title block above the roof — set both to name the house. Leave
|
||||||
|
% \qfdProjectTitle empty (default) to draw no title at all.
|
||||||
|
\def\qfdProjectTitle{} % project / feature name (large, bold)
|
||||||
|
\def\qfdConcept{} % concept in one sentence; \textbf{} the keywords
|
||||||
|
|
||||||
|
% Styles.
|
||||||
\tikzset{
|
\tikzset{
|
||||||
qfdthin/.style ={line width=0.35pt},
|
qfdthin/.style ={line width=0.35pt},
|
||||||
qfdmed/.style ={line width=0.7pt},
|
qfdmed/.style ={line width=0.7pt},
|
||||||
@@ -170,6 +197,7 @@ Strength of each Component in realising each Function (9/3/1/blank). Component l
|
|||||||
qfdrel/S/.style={qfdstrong},
|
qfdrel/S/.style={qfdstrong},
|
||||||
qfdrel/M/.style={qfdmod},
|
qfdrel/M/.style={qfdmod},
|
||||||
qfdrel/W/.style={qfdweak},
|
qfdrel/W/.style={qfdweak},
|
||||||
|
% Three perception-zone alternatives. Index 1 is emphasised.
|
||||||
qfdalt1mk/.style={circle, draw, fill=black,
|
qfdalt1mk/.style={circle, draw, fill=black,
|
||||||
minimum size=6pt, inner sep=0pt, line width=1pt},
|
minimum size=6pt, inner sep=0pt, line width=1pt},
|
||||||
qfdalt1ln/.style={line width=1.2pt},
|
qfdalt1ln/.style={line width=1.2pt},
|
||||||
@@ -182,6 +210,7 @@ Strength of each Component in realising each Function (9/3/1/blank). Component l
|
|||||||
qfdalt3ln/.style={line width=0.7pt, dotted},
|
qfdalt3ln/.style={line width=0.7pt, dotted},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
% --- Grid lines for every zone. ---
|
||||||
\newcommand{\qfdDrawGrid}{%
|
\newcommand{\qfdDrawGrid}{%
|
||||||
\foreach \c in {1,...,\qfdNHm} \draw[qfdthin] (\c, 0) -- (\c, -\qfdNW);
|
\foreach \c in {1,...,\qfdNHm} \draw[qfdthin] (\c, 0) -- (\c, -\qfdNW);
|
||||||
\foreach \r in {1,...,\qfdNWm} \draw[qfdthin] (0, -\r) -- (\qfdNH, -\r);
|
\foreach \r in {1,...,\qfdNWm} \draw[qfdthin] (0, -\r) -- (\qfdNH, -\r);
|
||||||
@@ -203,6 +232,7 @@ Strength of each Component in realising each Function (9/3/1/blank). Component l
|
|||||||
\fi
|
\fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
% --- Roof: diagonal grid + named coordinates (C-i-j) for correlations. ---
|
||||||
\newcommand{\qfdDrawRoof}{%
|
\newcommand{\qfdDrawRoof}{%
|
||||||
\ifqfdshowroof
|
\ifqfdshowroof
|
||||||
\foreach \k in {1,...,\qfdNHm} {%
|
\foreach \k in {1,...,\qfdNHm} {%
|
||||||
@@ -227,6 +257,7 @@ Strength of each Component in realising each Function (9/3/1/blank). Component l
|
|||||||
\fi
|
\fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
% --- Perception scale 0..5 + poor/excellent endpoints + zone title. ---
|
||||||
\newcommand{\qfdDrawScale}{%
|
\newcommand{\qfdDrawScale}{%
|
||||||
\ifqfdshowcompetitive
|
\ifqfdshowcompetitive
|
||||||
\foreach \tk in {0,1,2,3,4,5} {%
|
\foreach \tk in {0,1,2,3,4,5} {%
|
||||||
@@ -242,6 +273,7 @@ Strength of each Component in realising each Function (9/3/1/blank). Component l
|
|||||||
\fi
|
\fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
% --- Importance title (left) and WHATs title (header band). ---
|
||||||
\newcommand{\qfdDrawZoneTitles}{%
|
\newcommand{\qfdDrawZoneTitles}{%
|
||||||
\ifqfdshowimportance
|
\ifqfdshowimportance
|
||||||
\node[rotate=90, anchor=west, font=\footnotesize\bfseries]
|
\node[rotate=90, anchor=west, font=\footnotesize\bfseries]
|
||||||
@@ -252,6 +284,25 @@ Strength of each Component in realising each Function (9/3/1/blank). Component l
|
|||||||
{\ifqfdshowroof \qfdHdrH/2 \else 0.6 \fi}) {\qfdWhatsTitle};
|
{\ifqfdshowroof \qfdHdrH/2 \else 0.6 \fi}) {\qfdWhatsTitle};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
% --- Title + concept subtitle, centred above the roof apex. ---
|
||||||
|
\newcommand{\qfdDrawTitle}{%
|
||||||
|
\ifqfdshowtitle
|
||||||
|
\ifx\qfdProjectTitle\empty\else
|
||||||
|
\pgfmathsetmacro{\qfdTitleX}{\qfdNH/2}
|
||||||
|
\pgfmathsetmacro{\qfdTitleY}{\ifqfdshowroof \qfdApexY \else \qfdHdrH \fi + 0.9}
|
||||||
|
\pgfmathsetmacro{\qfdSubW}{\qfdNH + 2} % pre-computed (braces don't do arithmetic)
|
||||||
|
\node[anchor=south, font=\large\bfseries, align=center]
|
||||||
|
at (\qfdTitleX, \qfdTitleY) {\qfdProjectTitle};
|
||||||
|
\ifx\qfdConcept\empty\else
|
||||||
|
\node[anchor=north, font=\footnotesize\itshape, align=center,
|
||||||
|
text width=\qfdSubW cm]
|
||||||
|
at (\qfdTitleX, {\qfdTitleY - 0.1}) {\qfdConcept};
|
||||||
|
\fi
|
||||||
|
\fi
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
|
||||||
|
% --- Outer frames around each zone. ---
|
||||||
\newcommand{\qfdDrawFrames}{%
|
\newcommand{\qfdDrawFrames}{%
|
||||||
\begin{scope}[qfdmed]
|
\begin{scope}[qfdmed]
|
||||||
\draw (\qfdLeftEdge, 0) rectangle (\qfdNH, -\qfdNW);
|
\draw (\qfdLeftEdge, 0) rectangle (\qfdNH, -\qfdNW);
|
||||||
@@ -266,6 +317,7 @@ Strength of each Component in realising each Function (9/3/1/blank). Component l
|
|||||||
\end{scope}
|
\end{scope}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
% --- Legend on the right (Relations / Correlations / Evaluation). ---
|
||||||
\newcommand{\qfdDrawLegend}{%
|
\newcommand{\qfdDrawLegend}{%
|
||||||
\ifqfdshowlegend
|
\ifqfdshowlegend
|
||||||
\pgfmathsetmacro{\qfdLegX}{%
|
\pgfmathsetmacro{\qfdLegX}{%
|
||||||
@@ -278,6 +330,7 @@ Strength of each Component in realising each Function (9/3/1/blank). Component l
|
|||||||
\begin{scope}[shift={(\qfdLegX, \qfdLegY)}]
|
\begin{scope}[shift={(\qfdLegX, \qfdLegY)}]
|
||||||
\draw[qfdmed, rounded corners=2pt]
|
\draw[qfdmed, rounded corners=2pt]
|
||||||
(-0.15, 0.4) rectangle (4.5, \qfdLegBottom);
|
(-0.15, 0.4) rectangle (4.5, \qfdLegBottom);
|
||||||
|
% Relations
|
||||||
\node[anchor=west, font=\footnotesize\bfseries] at (0, 0.1)
|
\node[anchor=west, font=\footnotesize\bfseries] at (0, 0.1)
|
||||||
{\qfdRelTitle};
|
{\qfdRelTitle};
|
||||||
\draw[qfdthin] (0, -0.15) -- (4.35, -0.15);
|
\draw[qfdthin] (0, -0.15) -- (4.35, -0.15);
|
||||||
@@ -287,6 +340,7 @@ Strength of each Component in realising each Function (9/3/1/blank). Component l
|
|||||||
\node[anchor=west] at (0.5, -0.95) {Medium (3)};
|
\node[anchor=west] at (0.5, -0.95) {Medium (3)};
|
||||||
\node[qfdweak] at (0.22, -1.4) {};
|
\node[qfdweak] at (0.22, -1.4) {};
|
||||||
\node[anchor=west] at (0.5, -1.4) {Weak (1)};
|
\node[anchor=west] at (0.5, -1.4) {Weak (1)};
|
||||||
|
% Correlations (roof)
|
||||||
\ifqfdshowroof \ifqfdshowcorrlegend
|
\ifqfdshowroof \ifqfdshowcorrlegend
|
||||||
\node[anchor=west, font=\footnotesize\bfseries] at (0, -2.10)
|
\node[anchor=west, font=\footnotesize\bfseries] at (0, -2.10)
|
||||||
{\qfdCorrTitle};
|
{\qfdCorrTitle};
|
||||||
@@ -296,6 +350,7 @@ Strength of each Component in realising each Function (9/3/1/blank). Component l
|
|||||||
\node[anchor=west] at (0, -3.40) {{$-$\phantom{$-$}}\quad negative};
|
\node[anchor=west] at (0, -3.40) {{$-$\phantom{$-$}}\quad negative};
|
||||||
\node[anchor=west] at (0, -3.75) {{$-\!-$}\quad very negative};
|
\node[anchor=west] at (0, -3.75) {{$-\!-$}\quad very negative};
|
||||||
\fi \fi
|
\fi \fi
|
||||||
|
% Evaluation (3 alternatives)
|
||||||
\ifqfdshowcompetitive \ifqfdshowevallegend
|
\ifqfdshowcompetitive \ifqfdshowevallegend
|
||||||
\pgfmathsetmacro{\qfdEvalTop}{%
|
\pgfmathsetmacro{\qfdEvalTop}{%
|
||||||
-2.10 \ifqfdshowroof\ifqfdshowcorrlegend - 2.55 \fi\fi}
|
-2.10 \ifqfdshowroof\ifqfdshowcorrlegend - 2.55 \fi\fi}
|
||||||
@@ -321,6 +376,7 @@ Strength of each Component in realising each Function (9/3/1/blank). Component l
|
|||||||
\fi
|
\fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
% --- The environment users wrap their content in. ---
|
||||||
\newenvironment{qfdhouse}{%
|
\newenvironment{qfdhouse}{%
|
||||||
\begin{tikzpicture}[x=1cm, y=1cm, font=\scriptsize,
|
\begin{tikzpicture}[x=1cm, y=1cm, font=\scriptsize,
|
||||||
line cap=round, line join=round]
|
line cap=round, line join=round]
|
||||||
@@ -336,12 +392,12 @@ Strength of each Component in realising each Function (9/3/1/blank). Component l
|
|||||||
\qfdDrawRoof
|
\qfdDrawRoof
|
||||||
\qfdDrawScale
|
\qfdDrawScale
|
||||||
\qfdDrawZoneTitles
|
\qfdDrawZoneTitles
|
||||||
|
\qfdDrawTitle
|
||||||
}{%
|
}{%
|
||||||
\qfdDrawFrames
|
\qfdDrawFrames
|
||||||
\qfdDrawLegend
|
\qfdDrawLegend
|
||||||
\end{tikzpicture}%
|
\end{tikzpicture}%
|
||||||
}
|
}
|
||||||
|
|
||||||
% --- Macroplan house: 5 WHATs, 7 HOWs, no competitor zone ---
|
% --- Macroplan house: 5 WHATs, 7 HOWs, no competitor zone ---
|
||||||
\def\qfdNW{5}
|
\def\qfdNW{5}
|
||||||
\def\qfdNH{7}
|
\def\qfdNH{7}
|
||||||
|
|||||||
Reference in New Issue
Block a user