| commit | author | age | ||
| cc53f3 | 1 | \usepackage{marginnote} |
| SP | 2 | \usepackage{qrcode} |
| 3 | \newcommand{\marker}[1]{\raisebox{0.3ex}{\marginnote{ #1}}} | |
| 4 | %\newcommand{\marker}[1]{\normalmarginpar\marginpar{\hskip0.0cm\raisebox{0ex}{#1}}} | |
| 5 | %\usepackage{titleps} | |
| 6 | \usepackage{amsmath}% | |
| 7 | \usepackage{MnSymbol}% | |
| 8 | \usepackage{wasysym}% | |
| 9 | \usepackage{a4wide} | |
| 10 | \usepackage[slovene]{babel} | |
| 11 | \usepackage[utf8]{inputenc} | |
| 12 | ||
| 13 | ||
| 14 | \usepackage{upgreek} % Za pokoncne grske crke | |
| 15 | \usepackage{graphicx} | |
| 16 | \usepackage{rotating} | |
| 17 | %\usepackage{a4wide,everyshi,keyval} | |
| 18 | %\usepackage{textcomp} | |
| 19 | %\usepackage{calc} | |
| 20 | %\usepackage{refcount} | |
| 21 | %\usepackage{xstring} | |
| 22 | %\usepackage{ragged2e} | |
| 23 | \usepackage{tikz} | |
| 24 | \usepackage{ifthen} | |
| 25 | \usetikzlibrary{calc} | |
| 26 | ||
| 27 | %ADD PACKAGES HERE | |
| 28 | ||
| 29 | ||
| 30 | \setlength{\topmargin}{0mm} %-17mm | |
| 31 | \setlength{\hoffset}{0mm} | |
| 32 | \setlength{\voffset}{-22mm} | |
| 33 | \setlength{\headheight}{14mm} | |
| 34 | \setlength{\headsep}{20mm} | |
| 35 | \setlength{\footskip}{8mm} | |
| 36 | \setlength{\oddsidemargin}{-15mm} | |
| 37 | \setlength{\evensidemargin}{-15mm} | |
| 38 | \setlength{\marginparwidth}{5mm} | |
| 39 | \setlength{\textwidth}{190mm} | |
| 40 | \setlength{\textheight}{232mm} | |
| 41 | ||
| 42 | %some useful counters | |
| 43 | \newcounter{problemsetid} | |
| 44 | \newcounter{pageinproblemset} | |
| 45 | \newcounter{firstinproblemset} | |
| 46 | \newcounter{subproblem} | |
| 47 | ||
| 48 | ||
| 49 | %We are not using newpagestyle from titleps, but we define it here: | |
| 50 | \newcommand{\newpagestyle}[3]{% | |
| 51 | \expandafter\newcommand\csname ps@#1\endcsname{\def\@oddhead{#2}\let\@evenhead\@oddhead | |
| 52 | \def\@oddfoot{#3}\let\@evenfoot\@oddfoot}} | |
| 53 | ||
| 54 | %this creates the qr code and a human name for the header (in first and in all subsequent pages) | |
| 55 | \newcommand{\idlinewithname}[9]{\vskip3mm | |
| 56 | \begin{minipage}[c]{0.09\textwidth} %place for QR Code | |
| 57 | \qrcode[height=1.5cm]{#1,#2,#3,#4,#5} | |
| 58 | \end{minipage}% | |
| 59 | \begin{minipage}[c]{0.91\textwidth} %place for name and other info | |
| 60 | %\settowidth{\namelength}{#6} | |
| 61 | \hfill{\scriptsize\rm Študent/ka:\hskip3ex} \fbox{\parbox[c][7mm]{50mm}{\vspace{0mm}\hfil\Large{#6}\hfil\\\vspace{0mm}\hfil\small{\studentid}\hfil}} | |
| 62 | \vskip1.5mm{\scriptsize\rm #7 } | |
| 63 | \vskip-2mm\rule{\textwidth}{1pt} | |
| 64 | \end{minipage} | |
| 65 | \vskip2mm | |
| 66 | \parbox{\textwidth}{ | |
| 67 | {\bfseries\large #8}\hfill #9} | |
| 68 | } | |
| 69 | ||
| 70 | ||
| 71 | %footer | |
| 72 | \newcommand{\makefooter}[1]{ | |
| 73 | \vskip1mm\rule{\textwidth}{1pt}{ | |
| 74 | \parbox{\textwidth}{ | |
| 75 | \parbox{\textwidth}{\rm #1}\vskip3mm | |
| 76 | \parbox{\textwidth}{\scriptsize\rm \productname~{\the\year}.~Razvijalci=$\left\{\parbox{9.5mm}{{\tiny{Fo\v{s}nari\v{c}}\\ \vskip-2.5mm{Peni\v{c}}\\ \vskip-3.3mm{Berkopec}}}\right.$\text{ver.}~\productversion% | |
| 77 | %\hfill\if\thelastintest1{\rm $\star$ $\longleftrightarrow$ $\star$ }\else\fi | |
| 78 | %\parbox{\textwidth} | |
| 79 | \setcounter{pageinproblemset}{-\value{firstinproblemset}} | |
| 80 | \addtocounter{pageinproblemset}{\value{page}} | |
| 81 | \addtocounter{pageinproblemset}{1} | |
| 82 | \hfill Podpis: \rule{40mm}{0.2pt}\hskip1cm Stran \thepageinproblemset, pola \theproblemsetid, rok \examid. } | |
| 83 | } | |
| 84 | } | |
| 85 | } | |
| 86 | ||
| 87 | ||
| 88 | ||
| 89 | ||
| 90 | %a style for first page. Header (see above) and the name of the faculty and the exam. | |
| 91 | \newpagestyle{firstpagewithname}{% | |
| 92 | %upper markers | |
| 93 | \parbox{\textwidth}{ | |
| 94 | \setcounter{firstinproblemset}{\thepage} | |
| 95 | \stepcounter{problemsetid} | |
| 96 | \parbox{\textwidth}{\hskip1mm\parbox[t]{48mm}{$\blacksquare$}\parbox[t]{48mm}{$\blacksquare$}\parbox[t]{48mm}{$\blacksquare$}\parbox[t]{48mm}{$\blacksquare$}} | |
| 97 | %the header of the exam | |
| 98 | ||
| 99 | \idlinewithname{\facultyid}{\examid}{\theproblemsetid}{1}{\studentid}{\studentname}{\facultyname}{\examtitle}{\examdate} | |
| 100 | } | |
| 101 | }{\parbox{\textwidth}{\makefooter{\footertext}}} | |
| 102 | ||
| 103 | \newpagestyle{otherswithname}{% | |
| 104 | %upper markers | |
| 105 | \parbox{\textwidth}{ | |
| 106 | \parbox{\textwidth}{\hskip1mm\parbox[t]{48mm}{$\blacksquare$}\parbox[t]{48mm}{$\blacksquare$}\parbox[t]{48mm}{$\blacksquare$}\parbox[t]{48mm}{$\blacksquare$}} | |
| 107 | %the header of the exam | |
| 108 | % | |
| 109 | \setcounter{pageinproblemset}{-\value{firstinproblemset}} | |
| 110 | \addtocounter{pageinproblemset}{\value{page}} | |
| 111 | \addtocounter{pageinproblemset}{1} | |
| 112 | ||
| 113 | \idlinewithname{\facultyid}{\examid}{\theproblemsetid}{\thepageinproblemset}{\studentid}{\studentname}{\facultyname}{\ }{\ } | |
| 114 | } | |
| 115 | }{\parbox{\textwidth}{\makefooter{\footertext}}} | |
| 116 | ||
| 117 | ||
| 118 | %OLD STYLE PAGES | |
| 119 | %this creates the qr code and SID for the header (in first and in all subsequent pages) | |
| 120 | % | |
| 121 | % | |
| 122 | ||
| 123 | \def\xloop<#1#2>{% | |
| 124 | \ifx\relax#1 | |
| 125 | \else | |
| 126 | \sevensegnum{#1}\hskip1mm\xloop<#2>% here you can set the distance between the numbers | |
| 127 | \fi} | |
| 128 | \def\markletters#1{\xloop<#1\relax>} | |
| 129 | ||
| 130 | \newcommand{\sid}[1]{ | |
| 131 | \markletters{#1} | |
| 132 | } | |
| 133 | ||
| 134 | \newcommand{\idlinewithsid}[8][]{\vskip3mm | |
| 135 | \begin{minipage}[c]{0.09\textwidth} %place for QR Code | |
| 136 | \qrcode[height=1.5cm]{#2,#3,#4,#5} | |
| 137 | \end{minipage}% | |
| 138 | \begin{minipage}[c]{0.91\textwidth} %place for name and other info | |
| 139 | \ifx& | |
| 140 | \phantom{ | |
| 141 | \hfill{\scriptsize\rm Ime in priimek:\hskip3ex \fbox{\parbox[c][7mm]{50mm}{\vspace{0mm}\hspace{50mm}}}\hfill\rm Vpisna \v{s}t.:\hskip3ex\hskip0mm\raisebox{-4mm}{#1}} | |
| 142 | } | |
| 143 | \else | |
| 144 | \hfill{\scriptsize\rm Ime in priimek:\hskip3ex \fbox{\parbox[c][7mm]{50mm}{\vspace{0mm}\hspace{50mm}}}\hfill\rm Vpisna \v{s}t.:\hskip3ex\hskip0mm\raisebox{-4mm}{#1}} | |
| 145 | \fi | |
| 146 | \vskip1.5mm{\scriptsize\rm #6 } | |
| 147 | \vskip-2mm\rule{\textwidth}{1pt} | |
| 148 | \end{minipage} | |
| 149 | \vskip2mm | |
| 150 | \parbox{\textwidth}{ | |
| 151 | {\bfseries\large #7}\hfill #8} | |
| 152 | } | |
| 153 | ||
| 154 | \newpagestyle{firstpagewithsid}{% | |
| 155 | %upper markers | |
| 156 | \parbox{\textwidth}{ | |
| 157 | \setcounter{firstinproblemset}{\thepage} | |
| 158 | \stepcounter{problemsetid} | |
| 159 | \parbox{\textwidth}{\hskip1mm\parbox[t]{48mm}{$\blacksquare$}\parbox[t]{48mm}{$\blacksquare$}\parbox[t]{48mm}{$\blacksquare$}\parbox[t]{48mm}{$\blacksquare$}} | |
| 160 | %the header of the exam | |
| 161 | ||
| 162 | \idlinewithsid[\sidprefill]{\facultyid}{\examid}{\theproblemsetid}{1}{\facultyname}{\examtitle}{\examdate} | |
| 163 | } | |
| 164 | }{\parbox{\textwidth}{\makefooter{\footertext}}} | |
| 165 | ||
| 166 | \newpagestyle{otherswithsid}{% | |
| 167 | %upper markers | |
| 168 | \parbox{\textwidth}{ | |
| 169 | \parbox{\textwidth}{\hskip1mm\parbox[t]{48mm}{$\blacksquare$}\parbox[t]{48mm}{$\blacksquare$}\parbox[t]{48mm}{$\blacksquare$}\parbox[t]{48mm}{$\blacksquare$}} | |
| 170 | %the header of the exam | |
| 171 | % | |
| 172 | \setcounter{pageinproblemset}{-\value{firstinproblemset}} | |
| 173 | \addtocounter{pageinproblemset}{\value{page}} | |
| 174 | \addtocounter{pageinproblemset}{1} | |
| 175 | ||
| 176 | \idlinewithsid{\facultyid}{\examid}{\theproblemsetid}{\thepageinproblemset}{\facultyname}{\ }{\ } | |
| 177 | } | |
| 178 | }{\parbox{\textwidth}{\makefooter{\footertext}}} | |
| 179 | % | |
| 180 | % | |
| 181 | % | |
| 182 | %%%%% END OLD STYLE | |
| 183 | ||
| 184 | ||
| 185 | \newcommand{\problemtext}[3][]{% | |
| 186 | \setcounter{subproblem}{0}% | |
| 187 | \noindent{\hskip1mm\parbox[t]{4mm}{\bfseries\rightline{#2. }}}% | |
| 188 | \noindent\parbox[t]{0.95\textwidth}{ #3 \ifx& \else $\mathbf{[}$\textbf{#1}$\mathbf{]}$ \fi}% | |
| 189 | } | |
| 190 | ||
| 191 | \newcommand{\subproblemtext}[1]{% | |
| 192 | \addtocounter{subproblem}{1}% | |
| 193 | \parbox[t]{0.95\textwidth}{\alph{subproblem}) #1}% | |
| 194 | } | |
| 195 | ||
| 196 | \newcommand{\answersinline}[4]{\noindent% | |
| 197 | \parbox[t][][t]{180mm}{ | |
| 198 | \makebox[48mm][l]{\textcircled{\scriptsize{\rm{A}}}\hskip2pt\begin{minipage}[t][][t]{42mm}{{\small\begin{flushleft} #1\end{flushleft}}}\end{minipage}}% | |
| 993a25 | 199 | \makebox[48mm][l]{\textcircled{\scriptsize{\rm{B}}}\hskip2pt\begin{minipage}[t][][t]{42mm}{{\small\begin{flushleft} #2\end{flushleft}}}\end{minipage}}% |
| SP | 200 | \makebox[48mm][l]{\textcircled{\scriptsize{\rm{C}}}\hskip2pt\begin{minipage}[t][][t]{42mm}{{\small\begin{flushleft} #3\end{flushleft}}}\end{minipage}}% |
| 201 | \makebox[48mm][l]{\textcircled{\scriptsize{\rm{D}}}\hskip2pt\begin{minipage}[t][][t]{42mm}{{\small\begin{flushleft} #4\end{flushleft}}}\end{minipage}}% | |
| cc53f3 | 202 | \marker{$\blacksquare$} |
| SP | 203 | } |
| 204 | } | |
| 205 | ||
| 206 | %Answer multiline template | |
| 207 | \newcommand{\answersmultiline}[4]{\noindent% | |
| 208 | \parbox[t][][t]{180mm}{ | |
| 209 | \marker{$\blacktriangledown$}\textcircled{\scriptsize{\rm{A}}}\hskip4pt{\parbox[t][][t]{0.95\textwidth}{\small #1}}% | |
| 210 | \vskip\multilinesep | |
| 211 | \marker{$\blacktriangle$}\textcircled{\scriptsize{\rm{B}}}\hskip4pt{\parbox[t][][t]{0.95\textwidth}{\small #2}}% | |
| 212 | \vskip\multilinesep | |
| 213 | \marker{$\blacktriangle$}\textcircled{\scriptsize{\rm{C}}}\hskip4pt{\parbox[t][][t]{0.95\textwidth}{\small #3}}% | |
| 214 | \vskip\multilinesep | |
| 215 | \marker{$\blacktriangle$}\textcircled{\scriptsize{\rm{D}}}\hskip4pt{\parbox[t][][t]{0.95\textwidth}{\small #4}}% | |
| 216 | } | |
| 217 | } | |
| 218 | ||
| 219 | ||
| 220 | ||
| 221 | ||
| 222 | %%7-segment display | |
| 223 | %from: http://www.texample.net/tikz/examples/segment-display/ | |
| 224 | \pgfkeys{ | |
| 225 | /sevenseg/.is family, /sevenseg, | |
| 226 | slant/.estore in = \sevensegSlant, % vertical slant in degrees | |
| 227 | size/.estore in = \sevensegSize, % length of a segment | |
| 228 | shrink/.estore in = \sevensegShrink, % avoids overlapping of segments | |
| 229 | line width/.estore in = \sevensegLinewidth, % thickness of the segments | |
| 230 | line cap/.estore in = \sevensegLinecap, % end cap style rect, round, butt | |
| 231 | oncolor/.estore in = \sevensegOncolor, % color of an ON segment | |
| 232 | offcolor/.estore in = \sevensegOffcolor, % color of an OFF segment | |
| 233 | } | |
| 234 | ||
| 235 | \pgfkeys{ | |
| 236 | /sevenseg, | |
| 237 | default/.style = {slant = 0, size = 0.4cm, shrink = 0.1, | |
| 238 | line width = 0.9mm, line cap = round, | |
| 239 | oncolor = black, offcolor = gray!10} | |
| 240 | } | |
| 241 | ||
| 242 | %=============================================== | |
| 243 | % a b c d e f g - segment values | |
| 244 | % \sevenseg[options]{{1,1,1,1,1,1,0,}} | |
| 245 | % | |
| 246 | \newcommand{\sevenseg}[2][]% options values | |
| 247 | {% | |
| 248 | \pgfkeys{/sevenseg, default, #1}% | |
| 249 | \def\sevensegarray{#2}% | |
| 250 | \begin{tikzpicture}% | |
| 251 | % first define the position of the 6 corner points | |
| 252 | \path (0,0) ++(0,0) coordinate (P1); | |
| 253 | \path (0,0) ++(\sevensegSize,0) coordinate (P2); | |
| 254 | \path (0,0) ++(90-\sevensegSlant:\sevensegSize) coordinate (P3); | |
| 255 | \path (P2) ++(90-\sevensegSlant:\sevensegSize) coordinate (P4); | |
| 256 | \path (P3) ++(90-\sevensegSlant:\sevensegSize) coordinate (P5); | |
| 257 | \path (P4) ++(90-\sevensegSlant:\sevensegSize) coordinate (P6); | |
| 258 | % then step through the 1/0 values in the segment array | |
| 259 | \foreach \i in {0,...,6}% | |
| 260 | { | |
| 261 | \pgfmathparse{\sevensegarray[\i]} | |
| 262 | \ifthenelse{\equal{\pgfmathresult}{1}}% | |
| 263 | {\let\mycolor=\sevensegOncolor}% segment is on | |
| 264 | {\let\mycolor=\sevensegOffcolor}% segment is off | |
| 265 | \tikzstyle{segstyle} = [draw=\mycolor, line width = \sevensegLinewidth, | |
| 266 | line cap = \sevensegLinecap] | |
| 267 | %----------------------- | |
| 268 | \ifthenelse{\equal{\i}{0}}{\path[segstyle] | |
| 269 | (${1-\sevensegShrink}*(P5)+\sevensegShrink*(P6)$) | |
| 270 | -- ($\sevensegShrink*(P5)+{1-\sevensegShrink}*(P6)$);}{} % a | |
| 271 | \ifthenelse{\equal{\i}{1}}{\path[segstyle] | |
| 272 | (${1-\sevensegShrink}*(P6)+\sevensegShrink*(P4)$) | |
| 273 | -- ($\sevensegShrink*(P6)+{1-\sevensegShrink}*(P4)$);}{} % b | |
| 274 | \ifthenelse{\equal{\i}{2}}{\path[segstyle] | |
| 275 | (${1-\sevensegShrink}*(P4)+\sevensegShrink*(P2)$) | |
| 276 | -- ($\sevensegShrink*(P4)+{1-\sevensegShrink}*(P2)$);}{} % c | |
| 277 | \ifthenelse{\equal{\i}{3}}{\path[segstyle] | |
| 278 | (${1-\sevensegShrink}*(P1)+\sevensegShrink*(P2)$) | |
| 279 | -- ($\sevensegShrink*(P1)+{1-\sevensegShrink}*(P2)$);}{} % d | |
| 280 | \ifthenelse{\equal{\i}{4}}{\path[segstyle] | |
| 281 | (${1-\sevensegShrink}*(P1)+\sevensegShrink*(P3)$) | |
| 282 | -- ($\sevensegShrink*(P1)+{1-\sevensegShrink}*(P3)$);}{} % e | |
| 283 | \ifthenelse{\equal{\i}{5}}{\path[segstyle] | |
| 284 | (${1-\sevensegShrink}*(P3)+\sevensegShrink*(P5)$) | |
| 285 | -- ($\sevensegShrink*(P3)+{1-\sevensegShrink}*(P5)$);}{} % f | |
| 286 | \ifthenelse{\equal{\i}{6}}{\path[segstyle] | |
| 287 | (${1-\sevensegShrink}*(P3)+\sevensegShrink*(P4)$) | |
| 288 | -- ($\sevensegShrink*(P3)+{1-\sevensegShrink}*(P4)$);}{} % g | |
| 289 | } | |
| 290 | \end{tikzpicture}% | |
| 291 | } | |
| 292 | ||
| 293 | \newcommand{\sevensegnum}[2][]% sample characvters | |
| 294 | {% | |
| 295 | \ifthenelse{\equal{#2}{0}}{\sevenseg[#1]{{1,1,1,1,1,1,0,}}}{% | |
| 296 | \ifthenelse{\equal{#2}{1}}{\sevenseg[#1]{{0,1,1,0,0,0,0,}}}{% | |
| 297 | \ifthenelse{\equal{#2}{2}}{\sevenseg[#1]{{1,1,0,1,1,0,1,}}}{% | |
| 298 | \ifthenelse{\equal{#2}{3}}{\sevenseg[#1]{{1,1,1,1,0,0,1,}}}{% | |
| 299 | \ifthenelse{\equal{#2}{4}}{\sevenseg[#1]{{0,1,1,0,0,1,1,}}}{% | |
| 300 | \ifthenelse{\equal{#2}{5}}{\sevenseg[#1]{{1,0,1,1,0,1,1,}}}{% | |
| 301 | \ifthenelse{\equal{#2}{6}}{\sevenseg[#1]{{1,0,1,1,1,1,1,}}}{% | |
| 302 | \ifthenelse{\equal{#2}{7}}{\sevenseg[#1]{{1,1,1,0,0,0,0,}}}{% | |
| 303 | \ifthenelse{\equal{#2}{8}}{\sevenseg[#1]{{1,1,1,1,1,1,1,}}}{% | |
| 304 | \ifthenelse{\equal{#2}{9}}{\sevenseg[#1]{{1,1,1,1,0,1,1,}}}{% | |
| 305 | \ifthenelse{\equal{#2}{A}}{\sevenseg[#1]{{1,1,1,0,1,1,1,}}}{% | |
| 306 | \ifthenelse{\equal{#2}{B}}{\sevenseg[#1]{{0,0,1,1,1,1,1,}}}{% | |
| 307 | \ifthenelse{\equal{#2}{C}}{\sevenseg[#1]{{0,0,0,1,1,0,1,}}}{% | |
| 308 | \ifthenelse{\equal{#2}{D}}{\sevenseg[#1]{{0,1,1,1,1,0,1,}}}{% | |
| 309 | \ifthenelse{\equal{#2}{E}}{\sevenseg[#1]{{1,0,0,1,1,1,1,}}}{% | |
| 310 | \ifthenelse{\equal{#2}{F}}{\sevenseg[#1]{{1,0,0,0,1,1,1,}}}{% | |
| 311 | \ifthenelse{\equal{#2}{x}}{\sevenseg[#1]{{0,0,0,0,0,0,0,}}}{% | |
| 312 | {\sevenseg[#1]{{0,0,0,0,0,0,0,}}}}}}}}}}}}}}}}}}}}% | |
| 313 | } | |
| 314 | ||