GeneralCleaning up code

LaTeX specific issues not fitting into one of the other forums of this category.
Post Reply
User avatar
svend_tveskaeg
Posts: 478
Joined: Sun Jul 12, 2009 5:31 am

Cleaning up code

Post by svend_tveskaeg »

I've collected code that I've gotten from different answers over at {TeX} Stackexchange;
Code

Code: Select all

\documentclass[serif, 9pt]{beamer}

\usepackage{etex}
\usepackage{lmodern}
\usepackage{mathtools}
\usepackage{booktabs}
\usepackage{pstricks-add}
\usepackage{etoolbox}
\usepackage[locale = DE]{siunitx}

\psset{dimen = m}

\def\typetal{0}
\def\typetalMaks{0}
\def\zz\ignorespaces#1{%
  \expandafter\xdef\csname zz#1\endcsname{%
    \expandafter\ifx\csname zz#1\endcsname\relax
    1%
  \else
    \the\numexpr\csname zz#1\endcsname+1\relax
  \fi}%.
  \ifnum\typetalMaks < \csname zz#1\endcsname
    \gdef\typetal{#1}%
      \global\expandafter\let\expandafter\typetalMaks\csname zz#1\endcsname
  \fi
#1}
\newcommand*\hyppighed[1]{\csname zz#1\endcsname}

\ExplSyntaxOn
  \cs_new_eq:NN \calc \fp_eval:n
\ExplSyntaxOff

% The following are self-made macros to perform certain calculations
% but they are not very elegant, I think.
\newcommand*\dataliste{
  \elevA,
  \elevB,
  \elevC,
  \elevD,
  \elevE
  \elevF,
  \elevG,
  \elevH,
  \elevI,
  \elevJ,
  \elevK,
  \elevL,
  \elevM,
  \elevN,
  \elevO,
  \elevP,
  \elevQ,
  \elevR,
  \elevS,
  \elevT,
  \elevU,
  \elevV,
  \elevW,
  \elevX,
  \elevY,
  \elevZ,
  \elevAa,
  \elevAb,
  \elevAc,
  \elevAd,
  \elevAe,
  \elevAf,
  \elevAg,
  \elevAh,
  \elevAi,
  \elevAj,
  \elevAk,
  \elevAl,
  \elevAm,
  \elevAn,
  \elevAo,
  \elevAp
}
\newcommand*\minimum{\calc{min(\dataliste)}}
\newcommand*\maksimum{\calc{max(\dataliste)}}
\newcommand*\varians{\calc{\maksimum-\minimum}}
\newcommand*\hyppighedKumA{\hyppighed{\minimum}}
\newcommand*\hyppighedKumB{\calc{\hyppighedKumA+\hyppighed{1}}}
\newcommand*\hyppighedKumC{\calc{\hyppighedKumB+\hyppighed{2}}}
\newcommand*\hyppighedKumD{\calc{\hyppighedKumC+\hyppighed{3}}}
\newcommand*\hyppighedKumE{\calc{\hyppighedKumD+\hyppighed{4}}}
\newcommand*\hyppighedKumF{\calc{\hyppighedKumE+\hyppighed{5}}}
\newcommand*\hyppighedKumG{\calc{\hyppighedKumF+\hyppighed{6}}}
\newcommand*\hyppighedKumH{\calc{\hyppighedKumG+\hyppighed{\maksimum}}}
\newcommand*\hyppighedTotal{\hyppighedKumH}
\newcommand*\frekvens[1]{\calc{round(#1/\hyppighedTotal*100,1)}}
\newcommand*\frekvensKumA{\frekvens{\hyppighed{\minimum}}}
\newcommand*\frekvensKumB{\calc{\frekvensKumA+\frekvens{\hyppighed{1}}}}
\newcommand*\frekvensKumC{\calc{\frekvensKumB+\frekvens{\hyppighed{2}}}}
\newcommand*\frekvensKumD{\calc{\frekvensKumC+\frekvens{\hyppighed{3}}}}
\newcommand*\frekvensKumE{\calc{\frekvensKumD+\frekvens{\hyppighed{4}}}}
\newcommand*\frekvensKumF{\calc{\frekvensKumE+\frekvens{\hyppighed{5}}}}
\newcommand*\frekvensKumG{\calc{\frekvensKumF+\frekvens{\hyppighed{6}}}}
\newcommand*\frekvensKumH{\calc{\frekvensKumG+\frekvens{\hyppighed{\maksimum}}}}
\newcommand*\frekvensTotal{\frekvensKumH}
\newcommand*\middel[1]{\calc{#1*\hyppighed{#1}}}
\newcommand*\middelTotal{%
  \calc{
     \middel{\minimum}
    +\middel{1}
    +\middel{2}
    +\middel{3}
    +\middel{4}
    +\middel{5}
    +\middel{6}
    +\middel{\maksimum}
  }
}
\newcommand*\gennemsnit{\calc{\middelTotal/\hyppighedTotal}}
\newcommand*\frekvensMaks{
  max(
    \frekvens{\hyppighed{\minimum}},
    \frekvens{\hyppighed{1}},
    \frekvens{\hyppighed{2}},
    \frekvens{\hyppighed{3}},
    \frekvens{\hyppighed{4}},
    \frekvens{\hyppighed{4}},
    \frekvens{\hyppighed{6}},
    \frekvens{\hyppighed{\maksimum}}
  )
}

% Plots.
\def\hyp(#1)#2{%
 \psset{
   linewidth = 1.5pt,
   linecolor = blue!70
 }
  \psline(\calc{#1+1},0)(\calc{#1+1},#2)
  \psline(\calc{#1+0.8},#2)(\calc{#1+1.2},#2)%
}
\def\frek(#1)#2{%
 \psset{
   linewidth = 1.5pt,
   linecolor = blue!70
 }
  \psline(\calc{#1+1},0)(\calc{#1+1},\calc{#2/\hyppighedTotal*100})
  \psline(\calc{#1+0.8},\calc{#2/\hyppighedTotal*100})%
         (\calc{#1+1.2},\calc{#2/\hyppighedTotal*100})%
}
\def\hypKum(#1)#2#3{%
 \psset{
   linecolor = blue!70
 }
  \psline[
    linewidth = 1.5pt,
  ](\calc{#1+1},#2)(\calc{#1+1},#3)(\calc{#1+2+0.025pt},#3)
  \psline[
    linestyle = dashed,
    linewidth = 0.75pt
  ](\calc{#1+2},#3)(\calc{#1+2},0)%
}
\def\frekKum(#1)#2#3{%
 \psset{
   linecolor = blue!70
 }
  \psline[
    linewidth = 1.5pt
  ](\calc{#1+1},\calc{#2/\hyppighedTotal*100})%
   (\calc{#1+1},\calc{#3/\hyppighedTotal*100})%
   (\calc{#1+2+0.025pt},\calc{#3/\hyppighedTotal*100})%
  \psline[
    linestyle = dashed,
    linewidth = 0.75pt
  ](\calc{#1+2},\calc{#3/\hyppighedTotal*100})(\calc{#1+2},0)%
}
\def\kvartil#1#2{%
  \uput[180](0,#2){\tiny $#2$}
  \psline(0,#2)(\calc{#1+1},#2)%
}

% Box plot.
\def\boksplot[#1,#2]#3#4#5#6#7{%
  \begin{pspicture}(\calc{#3-0.5},-0.5)(\calc{#7+2.62},\calc{1.2+#2})
    \psaxes[
      yAxis = false
    ]{->}(0,0)(\calc{#3-0.5},0)(\calc{#7+0.5},0)[Frav{\ae}r~(dage),0][,90]
    \psxTick(0){0}
   {\tiny
    \psset{
      labelsep = 2pt,
      fillstyle = solid,
      dotsize = 1pt 2
    }
    \uput[90](#4,\calc{1+#2}){#4}
    \psframe[fillcolor = blue!60](#4,\calc{1-#2})(#5,\calc{1+#2})
    \uput[90](#5,\calc{1+#2}){#5}
    \psframe[fillcolor = red!60](#5,\calc{1-#2})(#6,\calc{1+#2})
    \uput[90](#6,\calc{1+#2}){#6}
    \psdot(#3,1)
    \ifnum #3 = #4
      %
     \else
      \psline(#3,1)(#4,1)
      \psline(#3,\calc{1-#1})(#3,\calc{1+#1})
      \uput[90](#3,\calc{1+#1}){#3}
    \fi
    \psdot(#7,1)
    \ifnum #7 = #6
      %
     \else
      \psline(#6,1)(#7,1)
      \psline(#7,\calc{1-#1})(#7,\calc{1+#1})
      \uput[90](#7,\calc{1+#1}){#7}
    \fi}
  \end{pspicture}%
}


\begin{document}

% data
\def\elevA{6}
\def\elevB{0}
\def\elevC{0}
\def\elevD{3}
\def\elevE{0}
\def\elevF{2}
\def\elevG{1}
\def\elevH{1}
\def\elevI{1}
\def\elevJ{5}
\def\elevK{0}
\def\elevL{3}
\def\elevM{7}
\def\elevN{3}
\def\elevO{1}
\def\elevP{1}
\def\elevQ{0}
\def\elevR{0}
\def\elevS{0}
\def\elevT{2}
\def\elevU{1}
\def\elevV{2}
\def\elevW{0}
\def\elevX{2}
\def\elevY{1}
\def\elevZ{1}
\def\elevAa{4}
\def\elevAb{6}
\def\elevAc{1}
\def\elevAd{1}
\def\elevAe{6}
\def\elevAf{2}
\def\elevAg{0}
\def\elevAh{3}
\def\elevAi{2}
\def\elevAj{1}
\def\elevAk{0}
\def\elevAl{0}
\def\elevAm{0}
\def\elevAn{0}
\def\elevAo{0}
\def\elevAp{4}

% quartiles
\def\kvtPctA{25}
\def\kvtPctB{50}
\def\kvtPctC{75}

% precision
\def\praecision{0}

\begin{frame}{\visible<1->{Exercise}}
\visible<1->{%
\begin{table}
  \begin{tabular}{*{14}{>\zz c}}
   \toprule
    \elevA  & \elevB  & \elevC  & \elevD  & \elevE  & \elevF  & \elevG  &
    \elevH  & \elevI  & \elevJ  & \elevK  & \elevL  & \elevM  & \elevN    \\[0.5ex]
    \elevO  & \elevP  & \elevQ  & \elevR  & \elevS  & \elevT  & \elevU  &
    \elevV  & \elevW  & \elevX  & \elevY  & \elevZ  & \elevAa & \elevAb   \\[0.5ex]
    \elevAc & \elevAd & \elevAe & \elevAf & \elevAg & \elevAh & \elevAi &
    \elevAj & \elevAk & \elevAl & \elevAm & \elevAn & \elevAo & \elevAp   \\
   \bottomrule
  \end{tabular}
\end{table}}
\end{frame}

\begin{frame}{\visible<1->{Exercise}}
\visible<1->{%
\ifnum \praecision = 0
\begin{table}
 \sisetup{
   round-mode = places,
   round-precision = \praecision
 }
  \begin{tabular}{
    c
    S[table-format = 2]
    S[table-format = 3]
    S[table-format = 2]
    S[table-format = 3]
    S[table-format = 2]
  }
   \toprule
       $x$
    & {$h(x)$}
    & {$f(x)$}
    & {$H(x)$}
    & {$F(x)$}
    & {$x \cdot h(x)$} \\[0.5ex]
       \textup{dage}
    & {---}
    & {\si{\percent}}
    & {---}
    & {\si{\percent}}
    & {\textup{dage}} \\
   \midrule
      \minimum
    & \hyppighed{\minimum}
    & \frekvens{\hyppighed{\minimum}}
    & \hyppighedKumA
    & \frekvensKumA
    & \middel{\minimum} \\
      1
    & \hyppighed{1}
    & \frekvens{\hyppighed{1}}
    & \hyppighedKumB
    & \frekvensKumB
    & \middel{1} \\
      2
    & \hyppighed{2}
    & \frekvens{\hyppighed{2}}
    & \hyppighedKumC
    & \frekvensKumC
    & \middel{2} \\
      3
    & \hyppighed{3}
    & \frekvens{\hyppighed{3}}
    & \hyppighedKumD
    & \frekvensKumD
    & \middel{3} \\
      4
    & \hyppighed{4}
    & \frekvens{\hyppighed{4}}
    & \hyppighedKumE
    & \frekvensKumE
    & \middel{4} \\
      5
    & \hyppighed{5}
    & \frekvens{\hyppighed{5}}
    & \hyppighedKumF
    & \frekvensKumF
    & \middel{5} \\
      6
    & \hyppighed{6}
    & \frekvens{\hyppighed{6}}
    & \hyppighedKumG
    & \frekvensKumG
    & \middel{6} \\
      \maksimum
    & \hyppighed{\maksimum}
    & \frekvens{\hyppighed{\maksimum}}
    & \hyppighedKumH
    & \frekvensKumH
    & \middel{\maksimum} \\
   \midrule
    & \hyppighedTotal
    & \frekvensTotal
    & 
    & 
    & \middelTotal \\
   \bottomrule
  \end{tabular}
\end{table}
\else
\begin{table}
 \sisetup{
   round-mode = places,
   round-precision = \praecision
 }
  \begin{tabular}{
    c
    S[table-format = 2]
    S[table-format = 3.\praecision, round-integer-to-decimal]
    S[table-format = 2]
    S[table-format = 3.\praecision, round-integer-to-decimal]
    S[table-format = 2]
  }
   \toprule
       $x$
    & {$h(x)$}
    & {$f(x)$}
    & {$H(x)$}
    & {$F(x)$}
    & {$x \cdot h(x)$} \\[0.5ex]
       \textup{dage}
    & {---}
    & {\si{\percent}}
    & {---}
    & {\si{\percent}}
    & {\textup{dage}} \\
   \midrule
      \minimum
    & \hyppighed{\minimum}
    & \frekvens{\hyppighed{\minimum}}
    & \hyppighedKumA
    & \frekvensKumA
    & \middel{\minimum} \\
      1
    & \hyppighed{1}
    & \frekvens{\hyppighed{1}}
    & \hyppighedKumB
    & \frekvensKumB
    & \middel{1} \\
      2
    & \hyppighed{2}
    & \frekvens{\hyppighed{2}}
    & \hyppighedKumC
    & \frekvensKumC
    & \middel{2} \\
      3
    & \hyppighed{3}
    & \frekvens{\hyppighed{3}}
    & \hyppighedKumD
    & \frekvensKumD
    & \middel{3} \\
      4
    & \hyppighed{4}
    & \frekvens{\hyppighed{4}}
    & \hyppighedKumE
    & \frekvensKumE
    & \middel{4} \\
      5
    & \hyppighed{5}
    & \frekvens{\hyppighed{5}}
    & \hyppighedKumF
    & \frekvensKumF
    & \middel{5} \\
      6
    & \hyppighed{6}
    & \frekvens{\hyppighed{6}}
    & \hyppighedKumG
    & \frekvensKumG
    & \middel{6} \\
      \maksimum
    & \hyppighed{\maksimum}
    & \frekvens{\hyppighed{\maksimum}}
    & \hyppighedKumH
    & \frekvensKumH
    & \middel{\maksimum} \\
   \midrule
    & \hyppighedTotal
    & \frekvensTotal
    & 
    & 
    & \middelTotal \\
   \bottomrule
  \end{tabular}
\end{table}
\fi
\ifdim \frekvensTotal pt = 100 pt
%  
 \else
  \textsf{Note:} Something.
\fi}
\end{frame}

\begin{frame}{\visible<1->{Exercise}}
\visible<1->{%
\begin{figure}
 \psset{yunit = 0.3}
  \begin{pspicture}(-0.6,-1.6)(\calc{\maksimum+3},\calc{\typetalMaks+2.5})
    \psaxes[Ox = -1]{->}%
      (0,0)(-0.18,-0.6)(\calc{\maksimum+1.7},\calc{\typetalMaks+1})%
      [$x$~(dage),0][$h(x)$,90]
    \psyTick(0){0}
    \multido{\i = \minimum+1}{\calc{\varians+1}}{\hyp(\i){\hyppighed{\i}}}
  \end{pspicture}
\end{figure}}
\end{frame}

\begin{frame}{\visible<1->{Exercise}}
\visible<1->{%
\begin{figure}
 \psset{yunit = 0.12}
  \begin{pspicture}(-0.6,-4)(\calc{\maksimum+3.05},\calc{\frekvensMaks+9.9})
    \psaxes[dy = 5, Dy = 5, Ox = -1]{->}%
      (0,0)(-0.3,-2)(\calc{\maksimum+1.7},\calc{\frekvensMaks+6})%
      [$x$~(dage),0][$f(x)$~(\si{\percent}),90]
    \psyTick(0){0}
    \multido{\i = \minimum+1}{\calc{\varians+1}}{\frek(\i){\hyppighed{\i}}}
  \end{pspicture}
\end{figure}}
\end{frame}

\begin{frame}{\visible<1->{Exercise}}
\visible<1->{%
\begin{figure}
 \psset{yunit = 0.1}
  \begin{pspicture}(-0.6,-5)(\calc{\maksimum+3},\calc{\hyppighedTotal+11.6})
    \psaxes[dy = 5, Dy = 5, Ox = -1]{->}%
      (0,0)(-0.2,-2.5)(\calc{\maksimum+1.7},\calc{\hyppighedTotal+7})%
      [$x$~(dage),0][$H(x)$,90]
    \psyTick(0){0}
    \hypKum(\minimum){0}{\hyppighedKumA}
    \hypKum(1){\hyppighedKumA}{\hyppighedKumB}
    \hypKum(2){\hyppighedKumB}{\hyppighedKumC}
    \hypKum(3){\hyppighedKumC}{\hyppighedKumD}
    \hypKum(4){\hyppighedKumD}{\hyppighedKumE}
    \hypKum(5){\hyppighedKumE}{\hyppighedKumF}
    \hypKum(6){\hyppighedKumF}{\hyppighedKumG}
    \psline[linecolor = blue!70,linewidth = 1.5pt]{->}%
      (\calc{\maksimum+1},\hyppighedKumG)%
      (\calc{\maksimum+1},\hyppighedKumH)%
      (\calc{\maksimum+1.7},\hyppighedKumH)
  \end{pspicture}
\end{figure}}
\end{frame}

\begin{frame}{\visible<1->{Exercise}}
\visible<1->{%
\begin{figure}
 \psset{yunit = 0.045}
  \begin{pspicture}(-0.75,-11.2)(\calc{\maksimum+3},119)
    \psaxes[dy = 10,  Dy = 10, Ox = -1]{->}%
      (0,0)(-0.2,\calc{-40/9})(\calc{\maksimum+1.7},108)%
      [$x$~(dage),0][$F(x)$~(\si{\percent}),90]
    \psyTick(0){0}
    \frekKum(\minimum){0}{\hyppighedKumA}
    \frekKum(1){\hyppighedKumA}{\hyppighedKumB}
    \frekKum(2){\hyppighedKumB}{\hyppighedKumC}
    \frekKum(3){\hyppighedKumC}{\hyppighedKumD}
    \frekKum(4){\hyppighedKumD}{\hyppighedKumE}
    \frekKum(5){\hyppighedKumE}{\hyppighedKumF}
    \frekKum(6){\hyppighedKumF}{\hyppighedKumG}
    \psline[
      linecolor = blue!70,
      linewidth = 1.5pt
    ]{->}(\calc{\maksimum+1},\calc{\hyppighedKumG/\hyppighedTotal*100})%
         (\calc{\maksimum+1},\calc{\hyppighedKumH/\hyppighedTotal*100})%
         (\calc{\maksimum+1.7},\calc{\hyppighedKumH/\hyppighedTotal*100})
  \end{pspicture}
\end{figure}}
\end{frame}

% Quartiles.
\ifdimcomp{\frekvensKumA pt}>{\kvtPctA pt}{
  \def\kvartilA{\minimum}}{}
\ifdimcomp{\frekvensKumA pt}<{\kvtPctA pt}{
  \ifdimcomp{\frekvensKumB pt}>{\kvtPctA pt}{\def\kvartilA{1}}{}}{}
\ifdimcomp{\frekvensKumB pt}<{\kvtPctA pt}{
  \ifdimcomp{\frekvensKumC pt}>{\kvtPctA pt}{\def\kvartilA{2}}{}}{}
\ifdimcomp{\frekvensKumC pt}<{\kvtPctA pt}{
  \ifdimcomp{\frekvensKumD pt}>{\kvtPctA pt}{\def\kvartilA{3}}{}}{}
\ifdimcomp{\frekvensKumD pt}<{\kvtPctA pt}{
  \ifdimcomp{\frekvensKumE pt}>{\kvtPctA pt}{\def\kvartilA{4}}{}}{}
\ifdimcomp{\frekvensKumE pt}<{\kvtPctA pt}{
  \ifdimcomp{\frekvensKumF pt}>{\kvtPctA pt}{\def\kvartilA{5}}{}}{}
\ifdimcomp{\frekvensKumF pt}<{\kvtPctA pt}{
  \ifdimcomp{\frekvensKumG pt}>{\kvtPctA pt}{\def\kvartilA{6}}{}}{}
\ifdimcomp{\frekvensKumG pt}<{\kvtPctA pt}{
  \ifdimcomp{\frekvensKumH pt}>{\kvtPctA pt}{\def\kvartilA{\maksimum}}{}}{}
\ifdimcomp{\frekvensKumA pt}>{\kvtPctB pt}{
  \def\kvartilB{\minimum}}{}
\ifdimcomp{\frekvensKumA pt}<{\kvtPctB pt}{
  \ifdimcomp{\frekvensKumB pt}>{\kvtPctB pt}{\def\kvartilB{1}}{}}{}
\ifdimcomp{\frekvensKumB pt}<{\kvtPctB pt}{
  \ifdimcomp{\frekvensKumC pt}>{\kvtPctB pt}{\def\kvartilB{2}}{}}{}
\ifdimcomp{\frekvensKumC pt}<{\kvtPctB pt}{
  \ifdimcomp{\frekvensKumD pt}>{\kvtPctB pt}{\def\kvartilB{3}}{}}{}
\ifdimcomp{\frekvensKumD pt}<{\kvtPctB pt}{
  \ifdimcomp{\frekvensKumE pt}>{\kvtPctB pt}{\def\kvartilB{4}}{}}{}
\ifdimcomp{\frekvensKumE pt}<{\kvtPctB pt}{
  \ifdimcomp{\frekvensKumF pt}>{\kvtPctB pt}{\def\kvartilB{5}}{}}{}
\ifdimcomp{\frekvensKumF pt}<{\kvtPctB pt}{
  \ifdimcomp{\frekvensKumG pt}>{\kvtPctB pt}{\def\kvartilB{6}}{}}{}
\ifdimcomp{\frekvensKumG pt}<{\kvtPctB pt}{
  \ifdimcomp{\frekvensKumH pt}>{\kvtPctB pt}{\def\kvartilB{\maksimum}}{}}{}
\ifdimcomp{\frekvensKumA pt}>{\kvtPctC pt}{
  \def\kvartilC{\minimum}}{}
\ifdimcomp{\frekvensKumA pt}<{\kvtPctC pt}{
  \ifdimcomp{\frekvensKumB pt}>{\kvtPctC pt}{\def\kvartilC{1}}{}}{}
\ifdimcomp{\frekvensKumB pt}<{\kvtPctC pt}{
  \ifdimcomp{\frekvensKumC pt}>{\kvtPctC pt}{\def\kvartilC{2}}{}}{}
\ifdimcomp{\frekvensKumC pt}<{\kvtPctC pt}{
  \ifdimcomp{\frekvensKumD pt}>{\kvtPctC pt}{\def\kvartilC{3}}{}}{}
\ifdimcomp{\frekvensKumD pt}<{\kvtPctC pt}{
  \ifdimcomp{\frekvensKumE pt}>{\kvtPctC pt}{\def\kvartilC{4}}{}}{}
\ifdimcomp{\frekvensKumE pt}<{\kvtPctC pt}{
  \ifdimcomp{\frekvensKumF pt}>{\kvtPctC pt}{\def\kvartilC{5}}{}}{}
\ifdimcomp{\frekvensKumF pt}<{\kvtPctC pt}{
  \ifdimcomp{\frekvensKumG pt}>{\kvtPctC pt}{\def\kvartilC{6}}{}}{}
\ifdimcomp{\frekvensKumG pt}<{\kvtPctC pt}{
  \ifdimcomp{\frekvensKumH pt}>{\kvtPctC pt}{\def\kvartilC{\maksimum}}{}}{}
\ifdimcomp{\frekvensKumA pt}>{50 pt}{
  \def\median{\minimum}}{}
\ifdimcomp{\frekvensKumA pt}<{50 pt}{
  \ifdimcomp{\frekvensKumB pt}>{50 pt}{\def\median{1}}{}}{}
\ifdimcomp{\frekvensKumB pt}<{50 pt}{
  \ifdimcomp{\frekvensKumC pt}>{50 pt}{\def\median{2}}{}}{}
\ifdimcomp{\frekvensKumC pt}<{50 pt}{
  \ifdimcomp{\frekvensKumD pt}>{50 pt}{\def\median{3}}{}}{}
\ifdimcomp{\frekvensKumD pt}<{50 pt}{
  \ifdimcomp{\frekvensKumE pt}>{50 pt}{\def\median{4}}{}}{}
\ifdimcomp{\frekvensKumE pt}<{50 pt}{
  \ifdimcomp{\frekvensKumF pt}>{50 pt}{\def\median{5}}{}}{}
\ifdimcomp{\frekvensKumF pt}<{50 pt}{
  \ifdimcomp{\frekvensKumG pt}>{50 pt}{\def\median{6}}{}}{}
\ifdimcomp{\frekvensKumG pt}<{50 pt}{
  \ifdimcomp{\frekvensKumH pt}>{50 pt}{\def\median{\maksimum}}{}}{}

\begin{frame}{\visible<1->{Exercise}}
\visible<1->{%
\begin{figure}
 \psset{yunit = 0.045}
  \begin{pspicture}(-0.75,-11.2)(\calc{\maksimum+3},119)
    \psaxes[dy = 10,  Dy = 10, Ox = -1, yticksize = 0 5pt, ylabelsep = 10pt]{->}%
      (0,0)(-0.2,\calc{-40/9})(\calc{\maksimum+1.7},108)%
      [$x$~(dage),0][,90]
      \uput[90](0,108){$F(x)$~(\si{\percent})}
      \rput(-0.435,0){$0$}
    \frekKum(\minimum){0}{\hyppighedKumA}
    \frekKum(1){\hyppighedKumA}{\hyppighedKumB}
    \frekKum(2){\hyppighedKumB}{\hyppighedKumC}
    \frekKum(3){\hyppighedKumC}{\hyppighedKumD}
    \frekKum(4){\hyppighedKumD}{\hyppighedKumE}
    \frekKum(5){\hyppighedKumE}{\hyppighedKumF}
    \frekKum(6){\hyppighedKumF}{\hyppighedKumG}
    \psline[linecolor = blue!70, linewidth = 1.5pt]{->}%
      (\calc{\maksimum+1},\calc{\hyppighedKumG/\hyppighedTotal*100})%
      (\calc{\maksimum+1},\calc{\hyppighedKumH/\hyppighedTotal*100})%
      (\calc{\maksimum+1.7},\calc{\hyppighedKumH/\hyppighedTotal*100})
    \psset{
      arrows = ->,
      linewidth = 0.75pt,
      labelsep = 2pt
    }
    \psline(0,50)(\calc{\median+1},50)
    \kvartil{\kvartilA}{\kvtPctA}
    \kvartil{\kvartilB}{\kvtPctB}
    \kvartil{\kvartilC}{\kvtPctC}
    \psline(0,100)(\calc{\maksimum+1},100)
  \end{pspicture}
\end{figure}}
\end{frame}

\begin{frame}{\visible<1->{Exercise}}
\visible<1->{%
\begin{align*}
  (a, b, c)
  &= (\kvartilA, \kvartilB, \kvartilC)\\
  \operatorname{min}
  &= \minimum\\
  \operatorname{maks}
  &= \maksimum\\
  \operatorname{var}
  &= \maksimum - \minimum
   = \varians\\
  \textnormal{type}
  &= \typetal\\
  \text{median}
  &= \median\\
  \textnormal{middel}
  &= \frac{\middelTotal}{\hyppighedTotal}
   \approx \num[round-mode = places, round-precision = 1]{\gennemsnit}
\end{align*}}
\end{frame}

\def\endehoejde{0.2}
\def\bokshoejde{0.5}

\begin{frame}{\visible<1->{Exercise}}
\visible<1->{%
\begin{figure}
  \boksplot[
    \endehoejde,
    \bokshoejde
  ]{\minimum}%
   {\kvartilA}%
   {\kvartilB}%
   {\kvartilC}%
   {\maksimum}
\end{figure}}
\visible<2->{\emph{Description}: Something.}
\end{frame}

\end{document}
'Question'
The code is very messy and not 'elegant' at all. I would like some help to improve it.

I haven't posted it at {TeX} Stackexchange because I think the question will be closed there for being "primarily opinion-based".
Last edited by svend_tveskaeg on Sun Mar 22, 2015 7:24 pm, edited 5 times in total.
``In the game of chess, you can never let your adversary see your pieces.''
-- Zapp Brannigan, Futurama (season 1, episode 4)

Recommended reading 2024:

LaTeXguide.org • LaTeX-Cookbook.net • TikZ.org

NEW: TikZ book now 40% off at Amazon.com for a short time.

And: Currently, Packt sells ebooks for $4.99 each if you buy 5 of their over 1000 ebooks. If you choose only a single one, $9.99. How about combining 3 LaTeX books with Python, gnuplot, mathplotlib, Matlab, ChatGPT or other AI books? Epub and PDF. Bundle (3 books, add more for higher discount): https://packt.link/MDH5p

Stefan Kottwitz
Site Admin
Posts: 10335
Joined: Mon Mar 10, 2008 9:44 pm

Cleaning up code

Post by Stefan Kottwitz »

I noticed, over time, many people went to the commercial TeX forum with collecting reputation and badges and so on. Here, at the LaTeX Community forum, it's talking and helping without getting points for that. So we lost helpers to the other site, now we got many questions but few helping answerers.

We don't close topics quickly. (The other site offers badges for snitching, flagging and closing, so people flag smallest things).

To the code. I would use array like data structures, such as LaTeX3 offers. Or, I would use datatool. Furthermore, I would shorten the code using for loops, at several places, such as definitions and table content. Also pstricks offers for loops.

Generally, everything similar can be simplified by making macros or loops.

Stefan
LaTeX.org admin
User avatar
svend_tveskaeg
Posts: 478
Joined: Sun Jul 12, 2009 5:31 am

Cleaning up code

Post by svend_tveskaeg »

Hi Stefan.

I've used at few \multidos and created a macro to shorten the code in the bar plots and the box plot but I don't know how to simplify the rest of the code. (I've never learned LaTeX 3 syntax and I don't have the time to learn it at the moment.)

Any chance I can make you (or someone else) help me with this?
``In the game of chess, you can never let your adversary see your pieces.''
-- Zapp Brannigan, Futurama (season 1, episode 4)
Post Reply