From 3e8e2ea55ae43a6463f8f1d793f132e09fa951ce Mon Sep 17 00:00:00 2001 From: Mateusz Kwiatkowski Date: Wed, 25 Jun 2025 11:16:10 +0000 Subject: Update on Overleaf. --- .../0_frontmatter/Icon\342\231\252" | 0 vu-cs-standard-thesis/0_frontmatter/abstract.tex | 27 + .../0_frontmatter/acknowledgement.tex | 13 + vu-cs-standard-thesis/0_frontmatter/dedication.tex | 9 + .../0_frontmatter/figures/Icon\342\231\252" | 0 .../0_frontmatter/figures/uva_logo.jpg | Bin 0 -> 23359 bytes .../0_frontmatter/figures/vu-griffioen.pdf | 1004 +++++++++ vu-cs-standard-thesis/0_frontmatter/glossary.tex | 21 + vu-cs-standard-thesis/Latex/Classes/CUEDbiblio.bst | 1141 ++++++++++ .../Latex/Classes/CUEDthesisPSnPDF.texshop | 1 + .../Latex/Classes/Icon\342\231\252" | 0 .../Latex/Classes/PhDbiblio-bold.bst | 1141 ++++++++++ .../Latex/Classes/PhDbiblio-case.bst | 1132 ++++++++++ .../Latex/Classes/PhDbiblio-url.bst | 1447 +++++++++++++ .../Latex/Classes/PhDbiblio-url2.bst | 1448 +++++++++++++ .../Latex/Classes/PhDthesisPSnPDF.cls | 409 ++++ .../Latex/Classes/elsarticle-num.bst | 1507 +++++++++++++ vu-cs-standard-thesis/Latex/Classes/jmb.bst | 1533 ++++++++++++++ vu-cs-standard-thesis/Latex/Classes/urlbst | 676 ++++++ "vu-cs-standard-thesis/Latex/Icon\342\231\252" | 0 .../Latex/Macros/Icon\342\231\252" | 0 vu-cs-standard-thesis/Latex/Macros/MacroFile1.tex | 73 + .../Latex/StyleFiles/Icon\342\231\252" | 0 .../Latex/StyleFiles/watermark.sty | 87 + vu-cs-standard-thesis/Latex/latex_intro.pdf | Bin 0 -> 2171118 bytes vu-cs-standard-thesis/booktabs.sty | 182 ++ vu-cs-standard-thesis/caption.sty | 693 ++++++ vu-cs-standard-thesis/fancyhdr.sty | 485 +++++ vu-cs-standard-thesis/footmisc.sty | 866 ++++++++ vu-cs-standard-thesis/listings.sty | 2237 ++++++++++++++++++++ vu-cs-standard-thesis/natbib.sty | 724 +++++++ vu-cs-standard-thesis/nomencl.sty | 192 ++ vu-cs-standard-thesis/references.bib | 7 + vu-cs-standard-thesis/rotating.sty | 199 ++ vu-cs-standard-thesis/sections/appendix.tex | 16 + vu-cs-standard-thesis/sections/background.tex | 10 + vu-cs-standard-thesis/sections/conclusion.tex | 11 + vu-cs-standard-thesis/sections/design.tex | 11 + vu-cs-standard-thesis/sections/discussion.tex | 10 + vu-cs-standard-thesis/sections/evaluation.tex | 13 + vu-cs-standard-thesis/sections/implementation.tex | 13 + vu-cs-standard-thesis/sections/intro.tex | 12 + vu-cs-standard-thesis/sections/overview.tex | 13 + vu-cs-standard-thesis/sections/related.tex | 10 + vu-cs-standard-thesis/sections/threats.tex | 9 + vu-cs-standard-thesis/setspace.sty | 546 +++++ vu-cs-standard-thesis/subfigure.sty | 218 ++ vu-cs-standard-thesis/thesis.tex | 293 +++ vu-cs-standard-thesis/tocbibind.sty | 328 +++ vu-cs-standard-thesis/vmargin.sty | 576 +++++ 50 files changed, 19343 insertions(+) create mode 100644 "vu-cs-standard-thesis/0_frontmatter/Icon\342\231\252" create mode 100644 vu-cs-standard-thesis/0_frontmatter/abstract.tex create mode 100644 vu-cs-standard-thesis/0_frontmatter/acknowledgement.tex create mode 100644 vu-cs-standard-thesis/0_frontmatter/dedication.tex create mode 100644 "vu-cs-standard-thesis/0_frontmatter/figures/Icon\342\231\252" create mode 100644 vu-cs-standard-thesis/0_frontmatter/figures/uva_logo.jpg create mode 100644 vu-cs-standard-thesis/0_frontmatter/figures/vu-griffioen.pdf create mode 100644 vu-cs-standard-thesis/0_frontmatter/glossary.tex create mode 100644 vu-cs-standard-thesis/Latex/Classes/CUEDbiblio.bst create mode 100644 vu-cs-standard-thesis/Latex/Classes/CUEDthesisPSnPDF.texshop create mode 100644 "vu-cs-standard-thesis/Latex/Classes/Icon\342\231\252" create mode 100644 vu-cs-standard-thesis/Latex/Classes/PhDbiblio-bold.bst create mode 100644 vu-cs-standard-thesis/Latex/Classes/PhDbiblio-case.bst create mode 100644 vu-cs-standard-thesis/Latex/Classes/PhDbiblio-url.bst create mode 100644 vu-cs-standard-thesis/Latex/Classes/PhDbiblio-url2.bst create mode 100644 vu-cs-standard-thesis/Latex/Classes/PhDthesisPSnPDF.cls create mode 100644 vu-cs-standard-thesis/Latex/Classes/elsarticle-num.bst create mode 100644 vu-cs-standard-thesis/Latex/Classes/jmb.bst create mode 100644 vu-cs-standard-thesis/Latex/Classes/urlbst create mode 100644 "vu-cs-standard-thesis/Latex/Icon\342\231\252" create mode 100644 "vu-cs-standard-thesis/Latex/Macros/Icon\342\231\252" create mode 100644 vu-cs-standard-thesis/Latex/Macros/MacroFile1.tex create mode 100644 "vu-cs-standard-thesis/Latex/StyleFiles/Icon\342\231\252" create mode 100644 vu-cs-standard-thesis/Latex/StyleFiles/watermark.sty create mode 100644 vu-cs-standard-thesis/Latex/latex_intro.pdf create mode 100644 vu-cs-standard-thesis/booktabs.sty create mode 100644 vu-cs-standard-thesis/caption.sty create mode 100644 vu-cs-standard-thesis/fancyhdr.sty create mode 100644 vu-cs-standard-thesis/footmisc.sty create mode 100644 vu-cs-standard-thesis/listings.sty create mode 100644 vu-cs-standard-thesis/natbib.sty create mode 100644 vu-cs-standard-thesis/nomencl.sty create mode 100644 vu-cs-standard-thesis/references.bib create mode 100644 vu-cs-standard-thesis/rotating.sty create mode 100644 vu-cs-standard-thesis/sections/appendix.tex create mode 100644 vu-cs-standard-thesis/sections/background.tex create mode 100644 vu-cs-standard-thesis/sections/conclusion.tex create mode 100644 vu-cs-standard-thesis/sections/design.tex create mode 100644 vu-cs-standard-thesis/sections/discussion.tex create mode 100644 vu-cs-standard-thesis/sections/evaluation.tex create mode 100644 vu-cs-standard-thesis/sections/implementation.tex create mode 100644 vu-cs-standard-thesis/sections/intro.tex create mode 100644 vu-cs-standard-thesis/sections/overview.tex create mode 100644 vu-cs-standard-thesis/sections/related.tex create mode 100644 vu-cs-standard-thesis/sections/threats.tex create mode 100644 vu-cs-standard-thesis/setspace.sty create mode 100644 vu-cs-standard-thesis/subfigure.sty create mode 100644 vu-cs-standard-thesis/thesis.tex create mode 100644 vu-cs-standard-thesis/tocbibind.sty create mode 100644 vu-cs-standard-thesis/vmargin.sty (limited to 'vu-cs-standard-thesis') diff --git "a/vu-cs-standard-thesis/0_frontmatter/Icon\342\231\252" "b/vu-cs-standard-thesis/0_frontmatter/Icon\342\231\252" new file mode 100644 index 0000000..e69de29 diff --git a/vu-cs-standard-thesis/0_frontmatter/abstract.tex b/vu-cs-standard-thesis/0_frontmatter/abstract.tex new file mode 100644 index 0000000..63e5e13 --- /dev/null +++ b/vu-cs-standard-thesis/0_frontmatter/abstract.tex @@ -0,0 +1,27 @@ + +% Thesis Abstract ----------------------------------------------------- + + +%\begin{abstractslong} %uncommenting this line, gives a different abstract heading +\begin{abstracts} %this creates the heading for the abstract page + +\noindent \textit{Context}. +\todo{at the end} + +\noindent \textit{Goal}. +\todo{at the end} + +\noindent \textit{Method}. +\todo{at the end} + +\noindent \textit{Results}. +\todo{at the end} + +\noindent \textit{Conclusions}. +\todo{at the end} + +\end{abstracts} +%\end{abstractlongs} + + +% ---------------------------------------------------------------------- diff --git a/vu-cs-standard-thesis/0_frontmatter/acknowledgement.tex b/vu-cs-standard-thesis/0_frontmatter/acknowledgement.tex new file mode 100644 index 0000000..4efb21e --- /dev/null +++ b/vu-cs-standard-thesis/0_frontmatter/acknowledgement.tex @@ -0,0 +1,13 @@ +% Thesis Acknowledgements ------------------------------------------------ + + +%\begin{acknowledgementslong} %uncommenting this line, gives a different acknowledgements heading +%\begin{acknowledgements} %this creates the heading for the acknowlegments + + +%\end{acknowledgements} +%\end{acknowledgmentslong} + +% ------------------------------------------------------------------------ + + diff --git a/vu-cs-standard-thesis/0_frontmatter/dedication.tex b/vu-cs-standard-thesis/0_frontmatter/dedication.tex new file mode 100644 index 0000000..9bc75a8 --- /dev/null +++ b/vu-cs-standard-thesis/0_frontmatter/dedication.tex @@ -0,0 +1,9 @@ +% Thesis Dedication --------------------------------------------------- + +%\begin{dedication} %this creates the heading for the dedication page + +%To ... + +%\end{dedication} + +% ---------------------------------------------------------------------- \ No newline at end of file diff --git "a/vu-cs-standard-thesis/0_frontmatter/figures/Icon\342\231\252" "b/vu-cs-standard-thesis/0_frontmatter/figures/Icon\342\231\252" new file mode 100644 index 0000000..e69de29 diff --git a/vu-cs-standard-thesis/0_frontmatter/figures/uva_logo.jpg b/vu-cs-standard-thesis/0_frontmatter/figures/uva_logo.jpg new file mode 100644 index 0000000..63d1731 Binary files /dev/null and b/vu-cs-standard-thesis/0_frontmatter/figures/uva_logo.jpg differ diff --git a/vu-cs-standard-thesis/0_frontmatter/figures/vu-griffioen.pdf b/vu-cs-standard-thesis/0_frontmatter/figures/vu-griffioen.pdf new file mode 100644 index 0000000..61d384e --- /dev/null +++ b/vu-cs-standard-thesis/0_frontmatter/figures/vu-griffioen.pdf @@ -0,0 +1,1004 @@ +%PDF-1.3 % +1 0 obj <> endobj 2 0 obj <>stream + + + + + application/pdf + + + VUlogo_NL_Wit_FC + + + + + 2011-01-12T18:22:35+01:00 + 2011-01-12T18:22:35+01:00 + 2011-01-12T18:22:35+01:00 + Adobe Illustrator CS5 + + + + 256 + 76 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgATAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FUDpmuaPqjXC6dew3bWr+ncCFw/Bj0Bp8ssyYZwriBFtWLPDJfCQa50jsrbXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8V/Oj 8ypvWl8r6PNxRQU1W4Q7knrApHQD9v8A4Hxr0HZWgFeJMe79f6nle2+0zZwwP9b9X6/l3pr+Qr2S 6Zf29naOQhia71RzRZpmBPoolNlhXvy3rWgrlPbIPECT7h5d/wAXJ9nzHgkIjuuXee74fjm9VzSv QuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kvlrz7/AM5F/mt5U846t5fkg00iwuGS F2t5eTwt8cLmko3aNlOBXs/5J/mNP598kx6reiJNVt55LbUI4QVQOp5oVVixAaN179a4VZ9iqXeZ NctNB8v6jrV3/vPp1vLcyDoWEaluI92IoMVeD/kv+eX5lefPPMGj3cGnx6XFFLc6hJDBIrrEg4qF ZpWALSug3HTFU2/P786vN/kHzDpun6HHZvBd2n1iU3UTyNz9Vk2Kum1FxVMf+cevza80fmD+n/07 Hap+jPqn1b6rG8dfrHr8+XJ5K/3S0xV7Firxj/nIP83/ADV+X91okWhR2rrqKXDT/Wo3kIMRjC8e Lx0+2a4qnP5BfmR5g8++WdQ1PW0t0uLW9NtGLVGjXgIkfcMz71c98VZf588yDy75Vv8AVFI+sInp 2oNDWaQ8E2PXiTyPsMytHg8XKI9OvucPX6nwcMp9envfLOph0uDHIxe4X4rqRiSxmf4n5E91J4n3 Fc7GHLyfPsoqW/Pr730d+Ten6lZeRbQXxH+kO09rEFVSkDgcAeIFSxBep3+LOV7UnGWY8PTY+97j sXHOOnHF13Hu/G/xZrJJHFG0kjBI0BZ3YgKANyST0zXgXydoTW5eXeb/AM9tI09ntPL8Q1O6FQbp qrbKfalGk+ig8Dm403Y8pb5PSO7r+x0Gs7fhDbH6j39P2/jd5e/5n+cbnV4dRu7+SdoHEkNoJGgt uSmqh44THyX5nfuc3A7PxCJiBV9eZ+10B7VzmYmZXXTkPkKe3eQ9V/MHVzHqWsjTY9HnjYxJaEyS s1aLxZXkj4ihr8ROc9rMeCHphxcfm9XoM2pyerJwcB7uf3kJr571fWdH8tXOq6Skcs9kUlmhlUsG gDUkpQrQhTyr7ZTo8UMmQRlyP3uRr808WIzhuY/d1SLzD5+vljvrnQ/SkstP0mPUZZZFLVlumBt4 9mFP3YZj9GZODRR2E+cp18uf2uJqO0Jeo46MY4+L4n6fs3S/RfzE8xXei+Y7xjaXkelWa3FpqFvF KkRnaMu0Lq7HkU2rxP68ty6HHGcBuOI0Qe7vacHaOWUMkvTIQjYIBq6uvgm5846t+kfKtvxi9PWt Omu7v4TUSR2yyrw+LYcj3rlH5WPDkP8AMkAPnTeNbPiwjb95Ek/6W9lD8t/N2s+ZEiubzUrJyY3e 402C3kSaOjlFJkaRlp3+z3yWv0sMWwjL33sx7M1s84uUo+cQNxv32z3NY7h2KuxV2KuxV2KuxV2K uxV2Kvl7/nL7yh6Oo6R5tgSkd0h0+9YbfvY6yQk+JZOY/wBjgVJf+cTvOB0zzvc+XZ3pa67CTCpO wurYGRfYco+Y9zTFX13hV4X/AM5aebv0b5Ks/LsD0uNcn5TqP+Wa1IdvlWUx/ccVUf8AnEfyiLHy lf8AmaZKT6xP6Ns3/LvakqSPDlKXB/1RirCP+cwv+Uz0T/tnH/k++Aqnf/OGX/TYf9u7/saxCvpb Cr5h/wCcyv8Ae/yr/wAYrz/iUOAqyX/nD7/lBNZ/7ajf9Q8WFU//AOcgNTEFtoNm6iSCS4kupoia chbhVCn5iVhm77Fx2ZnrVfP+x5v2iy0IRqxd/L+14dSe5uRzastw9TJI1AWdqFmY+/UnOi2A9zym 8j5l9PaRqXlfyj5BsJmvlk0u3hAiuRUmeRiXb01O5LvyIXt8hnIZceTPnIr1E/J73Dkw6bTRPF6A OfefL3vF/O35kal5plZbiR7LQ1YehpcLD1Jab8pW6fSagfsq1Cc3+k0McI23n3/qeX13actQdzWP +aOvv/G3QHdiMYvdQmjs7C1LO20dtbIzyOaCtacnc7V32HagzOJERZPzdaBKZEYjfuA/B/Gz1D8t vyq1hNShuvMOh27WBqzfXJCZBsePCBGK/apUSjNPru0YcJGOR4vL9f6nf9mdk5BMSywHD5/qH++e 4wwxQxJDCixxRgLHGgCqqjYAAbAZzpJJsvWRiAKHJZdW0F1azWtwgkgnRopYz0ZHBVgfmDhjIxII 5hE4CQIPIsO0r8sLXT/KGqeXVv3lfUyfUvnQc1UKqRpx5bhFTbfM/J2gZZY5K+no6zD2WIYJYuK+ Pr93ybk/LSJG1NLG/NraavYizvrURBkaZU4LcL8S8Wp1HffANffDxCzGVg307knswAy4ZcMZxoiu v85Ss/KGuyeYtKluxDDpegWU1jZypIXluPUjEIkdOKiP4BUjkd8lPVQGOVXxTkCfLqwx6LJ4kDKh DFEgb7nau7bZHeT/ACdrflyK2sjrxu9JtVdUsTaRxn4yWr6oZn2Zq5XqtVDLZ4Kket/obNDocmCo +JxQHThA+3myzMF2bsVdirsVdirsVdirsVdirsVYb+cHk8ebfy71jSETneeibiw8frFv+8jA/wBf jw+RxV8J6BrN5omt2GsWZ43Wn3EdzDvQFomDUNOxpQ+2BX6I6Jq1nrGj2WrWbc7S/gjuYG/yJVDC vvvvhV8afn35huvOX5vXGnWFZ0spY9G06JTUNKr8XoOlWndh8qYFfYflXy/beXfLWmaHbGsOnW0d uHpTmUUBnPu7VY4VfMf/ADmF/wApnon/AGzj/wAn3wFU7/5wy/6bD/t3f9jWIV9LYVfMP/OZX+9/ lX/jFef8ShwFWS/84ff8oJrP/bUb/qHiwqjf+cjI2E+gy/sMtyo+YMR/jnQdhnafw/S8t7SDeH+d +hgGt+RdV0jRNP1m7nh+q6jCstsgLmSjKrBSoUgVDkjem29DQZtMWrjOZgAbiXS59BPFjjkJHDMW O/8AH6kF5j8x3OsSW8K8otM0+MW+m2daiOJQBU0pykelXbufamTwYBCz/FLcn8fY16nUnIR/NiKi O4fr7yk5BBodj3y9xWf/AJZ+VdZ8wSy2cOp32kWfp+rLJbxOIZQG48XkV41LmppUHbNbr9RDEATG Mj583cdl6XJmJiJShHy5H42N3tPlH8vdI8s3E13b3F1eXs6enLcXUvMlag0CgKvVR1qffOf1Otnm ABAAHc9To+zoYJGQMjI9SWUZhuwY7+YWv33l/wAoX+r2IQ3Vt6PpiUFk/eTpGagFf2XPfMrRYY5c ojLkb+5wu0dRLDhlOPMV94CB8y+bNU03XNSsbdYjDaeX7nVoi6kt9Yhk4qCQR8FOo/HLcGmjOEZH rkEfg06nWThklEVUcRn8QfuSfy1+Z97rEmgWkkUdvqNzcvb6vbspBC/V2miliBOyyAAivv8APL9R 2eMfGecQLj86IPucfSdqnLwCqkTUh/m2CPItaf8AmHr3PR7y+WAaVe6pdaXduiMrI4JW2IYsQKmv KvhhnoYeoRviERIfpWHaOS4GVcEpyif97+1T1z8xtZt3juop7ey0i61SawtruWB7ikNsgV5uMbqX 5TBgKU2GHDoYHaiZiINXW56fJjqO05x9ViMDMxBIvYddj3teYvzC1TTE0QxavZNa6lDdTSanJZzK h9H+7VYPULryPw9eu+ODQxnxXE3EjbiHXzpGp7SljGOpR4ZiR4uE9OW135Naj5+81w6R5bub1YtE h1WN21DU3tnuY4ZK/uF4c14CVfi+Inr7HGGixGUwPXw8hdX3/JcnaGYQxmVYxO7lV13ddr/HJOI9 f8yX3mhdCsdQs1jXSob834t2nSWRn4OUUTJRGrVfiNPfKDhxxxcchL6yKuv0OR+ZyzzDHGUa8MSu rvetvVyY/D5886t+X195ta5sy1tJ6KWYtXFT9Yji5GT1vBztxzJlo8PjjFR3635HycSPaGc6U57j t04fMDnxJnced9Ui0e0v7HVbXVUu9WttNMq2UtqIxICZBxklYsaFaHp8+1Q0ceMxlExqBl9QP6G0 9oS4IyjKMxLII/SY138z7lePVvPD+dpPLH6Ush6dh+kPrf1F9/3oi9P0/rP+VWvL6MgceHwfE4Zf VVcXl/VbRm1Hj+FxR+nivhPfX85nua127sVdirsVdir4P/PPyh/hb8zNXso04WV2/wBfsR0Ho3JL 8V9kk5oP9XAr2H8lPzaj0r8j9fN1KDfeU1f6mrmvJbsn6oprX/j4Zk9lphVgP/OMvlWTzF+Zy6vd gywaKjX00jb8rhyUh5E9+TF/9jgV9m4VfJ//ADmED/jLQzTY6cQD8p3wFU5/5wyIr5wFdz+jtv8A pKxCvpfCr5f/AOcyXQ6l5WQH41hu2I9i8QH6jgKsn/5w+/5QTWf+2o3/AFDxYVeifmh5R/xFZaSg Qv8AV9RtxccftC2ncRTU+VVP0ZsOz9T4Rl5xPzHJ1Xauj8aMPKYv3HYvOvOsqeddbAubyy8v6RpM Usdo11KvqyNyK0ESmp+KMA8KhNxUsCubXSD8vDYSnKXOv1/i/du6bXH81k3MccIXVnf5fDpy9+yX aPpX5W/UE02XzDJFrNw6evqqQSCBVJo8EfqKhQNXeRgP+BJU25cmp4uIQ9I6Xv7/ANn6XHw4dHwC Jyes85Ua92/3/osMo8oad5b8r63qkkvlzU3t7AUOtXSpcIiKTzlVRHFxWgryj5njvtvmJqZ5M0Ig Tjcv4Rt8OZ+2t3P0ePFp8kycc6j/ABHf3nkPsvZ7Ejo6K6EMjAFWG4IO4IzQEPTgt4q7FUt8yaDZ 6/ol3pF4WW3u1CsyGjKVYOrD5MoOXYMxxTExzDRqdPHNjMJcikFt+XsrNqM2q6xNqN5e6dJpEU7R RxelayVJARNmau/I5ky1o2EYiIEuL3lw4dnH1GczKUoGF0BUVVPy40ePW9E1mKR0vNGt1tiwApcL HF6SGT/KUdx8uwwHXzMJQPKRv3b2yj2ZjE4TH1QFe/at1sv5cabL5Tu/LslzIYrq5e7W54r6kcjS CQce21KfLEa6QyjJXIUsuzYSwnESaJu/jbd1+Xtu2laHY6ffSWD6C3O1uUjjdmkK0Z2VwUqxJY7d TjHWninKQ4uPmsuzhwQjE8Ph8uSpL5FF9e2F3rWoyapJZRXUDiSKKNZY7tPTZWWIKBxHSgwDWcII gOG67+iZaATlGWSRlw8XdvxCuiCb8vtXTy+mgW3mOZNMWOS3eOa2hnZoH6JyahBUEhSO3yGWDWw4 +MwHFz5kbtUuzp+EMUch4OW4B27ky0HyNp+i6rDf2s8jehp0elpE9CCkbh/UJ/mY/RlObWSyRMSO cuJvwaCOOYkCdocCCT8tbFfJF15TF5L9XupfWa54rzB9ZZaAdOqUyw6+RzDLW4/VTUOzIjTnBZo9 fjatdeStR1CCCLV9dnvxbXlvfW5aC3i4tblqr+6VKh+e9elNsjHVxgSYQAuJHM9feznoZTA45mXD ISGwHK+4JknlmBPN8nmX1mM8ll9QNvQcAvqCTnXrWq0yo6g+F4dbcVt40w8bxb34eH7bTnMdyXYq 7FXYq7FXz/8A85deUPrnlzTfNMCVm0uX6reMP+We4PwM3ssoAH+vir5YivLqK3nt4pWSC5Ci4iBI Vwjcl5DvRtxgV9if84teUf0L+XI1WZON5r8xuSSKN9XirHAp9tmcf62FXseKvAf+ctvJV9qfl/TP M1lEZf0M0kV+qCpFvPxKyn/JR0of9avQYq8Z/In80rf8v/NctxqEbyaNqUQt74RDk8ZVuUcyrUcu BqCPAmm+BX1Sfz0/KUaf9fPma09GlfTBczdK/wBwF9Wv+xwq+T/zw/MqHz95zOoWSPHpNlCLTT1k FHZFYs0rLvQuzfcBgV9Pf846eULzyz+WNnFfRNBe6nLJqM8LAhk9YKkYYHofSjQkdsKs68zwNP5c 1OJWKs1rLxIZk3CEgFkowBpQ07ZdpzWSJ8w0aqJOKQH80vmPTfLeq6zrOlRahILGPWzSyvZkPpMF JjCxqgp1XiqbDp0BGdfkzxxwkY78HMPBYtNPJkiJenxORPLu2+4D3dFXzB5F1PTfMOqaRbo9w+np 9YiHE+pNbkqBIiivKgerU6UPhkcOrjPHGZ24tviy1GgnDLKAF8O/vH4P3vXvKGi3WveSorbTfMEq aDeQ/V7qzmgEtxD8PGeCG4ZlonVV5I1B0OaPVZRjzXKHrBsG9j3Ej+x6XR4JZtOBDIfDkKIqyO8A 93QbF6TDFHDCkMY4xxqERfBVFAM1JNm3eAUKC/Al2KoTVtTttL0u71G5NILSJ5pPEhBWg9z0GTxY zOQiOZa8uUY4GR5AW8+0T8wPMUvlrzJ+kxDHr+kWwvIRGo9P0p4RLGONTUodm+7Npm0WMZIcN8Ej XyLptP2hlOLJx14kBfzFj9qV3f5t68vk6ynhWMeYUupIdVUx1SOKF1QtxrtyNxEAfGtMvj2ZDxSD 9FbfH+wuNk7YyDACK8QSPFtyA/tj9qe3fmnzC3nm40S41OLQY+SrpMU9p60d4jgfEJ2eMc+WwUf6 u5zGjp8fgiYjx/zt64fg5k9Xl/MHGZDH/NuNiXxsb/2c1TSbzz1debdU0OTXLf09JW2keUWIrMs6 8ytPV+CnStTgywwxxRnwn1X/ABcq+DLDk1Es08ZmPRw/w87379kn8seevMep+XL3V5NXja8tdPvb t9NGnSIimBXWMi6Lek3xcWKj5djl2o0eOGQR4djKIvi7/Lm42l1+XJiMzIWIyPDwHpderl3NeXfz F8y31pq8q3UGow2OhvqMl1HbtD9WvjGWW2arFZKcTuOtPamHPoccTEUY3Ph53ce9Gn7SyzEzYkI4 +K6qpfzfNHWXm7zjYWvlnVdTuLW/0vzDNBbzRJAYJreS5WqFCruHAoa/D298qnpsUjOMQYygCedg 03Q1meAxzkYyhkIHKiL+O6JsPzC1CXz/APo6b0h5evJbiw06UU5m6tFQuzNX7LOWRfHIz0URg4h9 YAJ9xZ4+0ZHU8Brw5Exj741f27BK7b80tZiTzLb3qI1/bsw8vRqgBlBuXs1BFfi4Sha+O+XS7Oge Aj6T9Xy4vuaI9qzHiCQ9Q+jz9XD97NPy/wBbvtc8oadql+VN3crIZSg4rVZXQUHyXNfrcMceUxjy H6nZ9naiWbBGcuZv7yGQ5iua7FXYq7FXYqlXmry5YeZfLmo6Df1FrqMDQO605IWHwutajkjUYe4x V4n/ANCd+Vf+r/ff8i4f6YFe8aZp1ppmm2mm2aenaWUMdvbx/wAscShEG3gBhVE4qtliimieGZFk ikUpJG4DKysKFWB2IIxV4f5z/wCcT/JusXUt5oF7LoE0p5NbBBcWoJNTwjLRulfZ6DsMVYb/ANCc a16tD5ltvSr9v6tJyp/q86fjgpXoP5f/APOMXkvyxeRalqkz+YNRhPKL6xGsdqjDcMIAX5MP8tyP auFXseKpV5l0W71nTHsLfUZNOSYMlw8SRuzxOpVk/eA8a16rQ5fp8oxy4iOJx9TgOWHCJGN86rkg LvyTbz3Giql3JDpeiNDJbaaqRlDLbVEbmQr6gNDuK0NMsjqyBLb1Tvf3/Y0T0EZGG54MdVHzHI3z U7byVdQ3V7qT61cT63cxJb22pyRQFreFG5FI4+HpfH+1Vd/nkpasECPCBAb1vufvRHQkSM+MnIRX FQ2HkKrfqmvlzQoNC0iHToZHn9Mu8txJ9uSSRy7u3uWbKM+Y5JmR2cnTacYoCAN+ffaZ5S3uxV2K pX5i0GDXdPXT7mRltDNFLcxKARKkTh/SavRWKitMuwZjjlxDnXy82jU6cZY8MvpsX51vSQX/AOVu gy3Us+m00lLmymsLuC2jUJJHNuGI/mVqH3pmVDtGYFS9VSBFuHk7KxmRMfRcTE11Bde/lV5fuI9R KSSw3WpxW0FxOOJotq8b/AtNjIYV5b4w7RmDHuiSfnf3WjJ2Tilxc7mAD8K++t0Rq3ke61fVLafU tZmuNMtLwX0Gm+jAvGRCSiesF9QoK0p3HfIY9YIRIjECRFXZ+5nm0ByTBlMmMZcQjQ5++rpNLDy5 BZ+Y9U1xZmaXVEgSSEgcU+rrxBU9d8pnnMscYV9N/a5GPTCGWWS9519iQaX+XV9p+iPoKeYLh9Ge 3ubY2Zt7cClyrgn1AvqfC8nP7Xt0zJya6Mp8fAOOwbs9HExdmmGPw+M8FEVQ635X1tfJ+WdkBH9V vpbZm0r9DX3FVK3MQg9FJHU/toNwfYDpiNeeov18Q8t7Sey49CR6OA/0hVb+YW2P5aCH9Hi91m5v otHUfom3dIo4oJFWkcpVFHqMmxXkcZ6+7qIHF9XmjH2ZXDxTlIQ+kbUO4+dOk/KbyyNKsrazQWmp WLwzRavGi/WGlhNebk/a5Hcj+mI7SycRJ3ib9PRT2Rh4IiPplGjxdbCIT8tdB+t2d5M0kt1YzXc8 D/CATdyNJRxQ19Nnqm4yJ186IHIgfZ+tn/JuPijI84mR/wBMb+zonHlfQIfL+g2mjwytPFaBgsrg Bjzdn3A2/azH1GY5ZmZ2tydJphhxiANgfrtNcpch2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2 KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv/2Q== + + + + + + uuid:41a47aa5-a1d4-f44d-ac80-eb30b96069bb + xmp.did:00945102202068118C14A1540B7FBEB3 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + uuid:2812ac19-44ea-ea41-89c4-55b896f46a57 + xmp.did:FB7F11740720681188C6B5EE3D81CA80 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + + + + converted + from application/pdf to <unknown> + + + saved + xmp.iid:D27F11740720681191099C3B601C4548 + 2008-04-17T14:19:15+05:30 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/pdf to <unknown> + + + converted + from application/pdf to <unknown> + + + saved + xmp.iid:F97F1174072068118D4ED246B3ADB1C6 + 2008-05-15T16:23:06-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FA7F1174072068118D4ED246B3ADB1C6 + 2008-05-15T17:10:45-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:EF7F117407206811A46CA4519D24356B + 2008-05-15T22:53:33-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F07F117407206811A46CA4519D24356B + 2008-05-15T23:07:07-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F77F117407206811BDDDFD38D0CF24DD + 2008-05-16T10:35:43-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/pdf to <unknown> + + + saved + xmp.iid:F97F117407206811BDDDFD38D0CF24DD + 2008-05-16T10:40:59-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to <unknown> + + + saved + xmp.iid:FA7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:26:55-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FB7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:29:01-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FC7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:29:20-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FD7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:30:54-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:FE7F117407206811BDDDFD38D0CF24DD + 2008-05-16T11:31:22-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:B233668C16206811BDDDFD38D0CF24DD + 2008-05-16T12:23:46-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:B333668C16206811BDDDFD38D0CF24DD + 2008-05-16T13:27:54-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:B433668C16206811BDDDFD38D0CF24DD + 2008-05-16T13:46:13-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F77F11740720681197C1BF14D1759E83 + 2008-05-16T15:47:57-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F87F11740720681197C1BF14D1759E83 + 2008-05-16T15:51:06-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F97F11740720681197C1BF14D1759E83 + 2008-05-16T15:52:22-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator + + + saved + xmp.iid:FA7F117407206811B628E3BF27C8C41B + 2008-05-22T13:28:01-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator + + + saved + xmp.iid:FF7F117407206811B628E3BF27C8C41B + 2008-05-22T16:23:53-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator + + + saved + xmp.iid:07C3BD25102DDD1181B594070CEB88D9 + 2008-05-28T16:45:26-07:00 + Adobe Illustrator CS4 + + + / + + + + + converted + from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator + + + saved + xmp.iid:F87F1174072068119098B097FDA39BEF + 2008-06-02T13:25:25-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F77F117407206811BB1DBF8F242B6F84 + 2008-06-09T14:58:36-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F97F117407206811ACAFB8DA80854E76 + 2008-06-11T14:31:27-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:0180117407206811834383CD3A8D2303 + 2008-06-11T22:37:35-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:F77F117407206811818C85DF6A1A75C3 + 2008-06-27T14:40:42-07:00 + Adobe Illustrator CS4 + + + / + + + + + saved + xmp.iid:0680117407206811A12490AADA3FBECC + 2010-09-09T10:05:46+02:00 + Adobe Illustrator CS4 + / + + + saved + xmp.iid:0780117407206811A12490AADA3FBECC + 2010-09-09T10:07:07+02:00 + Adobe Illustrator CS4 + / + + + saved + xmp.iid:FB7F11740720681188C6B5EE3D81CA80 + 2010-11-19T11:54:42+01:00 + Adobe Illustrator CS5 + / + + + saved + xmp.iid:00945102202068118C14A1540B7FBEB3 + 2011-01-12T18:22:31+01:00 + Adobe Illustrator CS5 + / + + + + + + Print + + + False + False + 1 + + 74.250076 + 22.056535 + Millimeters + + + + Cyan + Magenta + Black + + + + + + Default Swatch Group + 0 + + + + White + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 0.000000 + + + Black + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 100.000000 + + + C=100 M=30 Y=0 K=0 + PROCESS + 100.000000 + CMYK + 100.000000 + 30.000002 + 0.000000 + 0.000000 + + + + + + + + + Adobe PDF library 9.90 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 3 0 obj <> endobj 5 0 obj <>/Resources<>/Properties<>>>>>/Thumb 9 0 R/TrimBox[0.0 0.0 210.473 62.5225]/Type/Page>> endobj 6 0 obj <>stream +HlW˪d ߯8?PSv0^xm 6 )CɗO_/\?\_rV65/?}îreez{)~]7︭[qVv~#v#Kn~fzO_u_޵h/ݣU[S޸j^{䁳LsYwvMŶ9kڼR6ץIPrlH];y{?| ] {!q-ck}^g݊x]PږbroxG~Eoku-m2"0aYi ܆]& Xq~`qX0tޯ~O +C76n_6JTr CLQ_-WBW #Mz tj-&hϡ_0x;?K۽VY(7!cf}PЧO톜1r7vI߼u7Vs[~Q%x4?x̛RFqt2EE#{XÁ E)`@>X "D7neA(S`1)۶~)$lo^]*xc#V*a +33E*]0isѿ]Bg{pY Sx\v^{alϳ^9 Vg WD+:,g!M7YҞ4ؙ`XbR}O"d@ C)Sb%0->NǐgC')YȈ."~0!-~F]SE0E\)2Xb}'q&2k- ӯZԲ3 $n/ea< -6JDH Hq2Q4 ZSPp2V$yhuIp\GHԁ⫶^7 TSo~͛|<}" 8]Fn+^#OzW6AcL4SXjr#E^2 vS<-J} x(k4DH x7T_O\4-\6F!4Gm"l1b%j6 K'BdOWc[{:Z=5oYI]`d։-_;?}C[S^QzB,{'OK @OuSٻЮ)]ec;xHyksRh]/ X80"Qپ)ZtI3 jvQ;q?Uh (F{0A)BjEσ n$WRRWL,qVz@4%/d[6B* NE|TBf̼O^*@_҈8W1ơC}t_QP[= EX\mThBb* $GTuCRêI!A +ĵXΟM9O Kx4e$L!R{,h=$1:o ^4ZI!>vM^o;cŢ%)/#Di0y6rӈvgi +!\>5zhjL#sq:$p9$EL6H% Cj4*d˦&[]xs3uH}p沸}ewѻ&GU-m [bCh9:ԚǐvkD !D-FКZSQZ!DnuP !71>r{VY7,.G8c(kEq^m[lFDپNoZW)͎V?-)Ho״et)f2V@[{Eۦ2?)%QPVZpһLg)`/.^j!>SoGM1ZM;d[ +4XhV +45nĦ\X+'ʫ]IR8S_1sL==[k*H2N"MkH5!p_Mưgpe8M[3]5qE25/E.B31.n]0@zQm MJ4GKa W) +ߨN9cTUb|BvkQ1ELY^D¡H!I*2C]LG6DzQER7xޕ$C+3} j#F#\E(D0`hl] eC +-U(1qb +дM;v ] +7G+ ȳ}dj=zJ^YMug}+bM^"nOww@#>tbEhݼ*[ÆɏuBW(X峐ǎKr1><ԁ'0E]hH̘N`I`@9`]א)1ֺ(Le++?gͪ5Ɓp:Un" [ |U*l~EV/zY[*p{a[{)&У35gJ =p(]\ +Kbf?sQ] 0tRg~?` :f|aQ!co.ђkmo~ ㏕gpS̹38Rꭣx—tQ%Jba7j˂t +-+N_ ,ڱ%yE.|fh!4uUg~U`D:Mh  쇶ۡx.\!_*SVx.xq?\U.5ޓ QB' }}S+%IHKjN Qzvq`DQ/1XƇgtP,LYrCJXG9;x"w +pO^EB@ &M*{ҷfRq )-&;§V~? +K*[k]%Vy ȹS^Ns 7 8sytrImw`~!S"WU= +Wɠ/{>JrHz+6lޏ|>*\qg*Hzv1ͦY.݂-<̂Y2 uH ;a`Ǻu~or _@3N/_hS~JF5F@a2PCv R=LxU,<,ÒeOП,2,Ԓg t C1t3ջc 􋶯8kS1${!`B<h էlךknھkJ0PByw8BD,G=W&%p743QQd͵L4 <섦jk (*V.172&d̵ULQ:Ջ~=eb Kٛ\2M tKSbcKbu--uCCKLk .C1'Xd1̢Lo:'E&ܯA0I-y&ᚎ3CEMdU +MJ;ph&\봖FPT zǹ +@T&{Nx2;m?ղ]ղЩ u\zۖCh8N=M_|v@(Sdܫb4nR +N,]`;-8|y[;5 /U'7uGG&Gfd%޶t×]nI~O X%!CRXj!А2_uuќ) +u(aǛ&BdR"vY +dILD4K1/`IMsQ>stream +8;U<*_%FIJ#QjDOHr31YoNr!n"SLbJE;$%LdL,i/TkG'*p=r<&%,(]+fk=0F3F3aE +2"ck[*rG?EVoa$u)Y/(5]Mg[^osX**!0gt\OT~> endstream endobj 10 0 obj [/Indexed/DeviceRGB 255 11 0 R] endobj 11 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 8 0 obj <> endobj 7 0 obj <> endobj 12 0 obj <> endobj 13 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 15.0 %%AI8_CreatorVersion: 15.0.0 %%For: (Rob Vonk) () %%Title: (VUlogo_NL_Wit_FC.ai) %%CreationDate: 12-01-11 18:22 %%Canvassize: 16383 %%BoundingBox: 306 271 518 334 %%HiResBoundingBox: 306.9697 271.2461 517.4424 333.7686 %%DocumentProcessColors: Cyan Magenta Black %AI5_FileFormat 11.0 %AI12_BuildNumber: 399 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%CMYKProcessColor: 1 0.3 0 0 (C=100 M=30 Y=0 K=0) %%+ 1 1 1 1 ([Registration]) %AI3_Cropmarks: 306.9697 271.2461 517.4424 333.7686 %AI3_TemplateBox: 421.5 296.7813 421.5 296.7813 %AI3_TileBox: 16.2061 -3.49219 808.2061 608.5073 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 1 %AI9_ColorModel: 2 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: 268.7666 381.5146 5.7832 1355 712 18 1 0 43 174 0 0 0 1 1 1 1 1 0 1 %AI5_OpenViewLayers: 7 %%PageOrigin:0 0 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 14 0 obj <>stream +%%BoundingBox: 306 271 518 334 %%HiResBoundingBox: 306.9697 271.2461 517.4424 333.7686 %AI7_Thumbnail: 128 40 8 %%BeginData: 5320 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FDFCFFFDBCFF8485FD7DFF841414FD7CFF7E140DA9FD7BFFA9140E %3D5AFD7AFFA8140D140D14A9FD79FF610E140E14A9FD0CFFAFA9FD40FFA8 %FFA8A8A8FD0BFFA8FFA8FFFFFFA8A8A8FD09FFA8A8A8FD06FFAF0D140E14 %0DA9FD0AFF84360E85A9AFA9FFFFFFA9FFFFFFA9AF84FFFFFFA9FFA9FFA8 %A9A9FD29FF7DF827F827A8FD09FFA827F827A8FF7D27262727FD07FFA827 %F82752FD05FF5A1414140E1484FD08FFA914140E1414140E61FFFFFFAF14 %FF8461363614FF5A85A937A9145AA9FD29FF7D27F827F8A8FD09FF7DF827 %27FFFFA8F827F827A8FD06FFA8F827F87DFD04FFA81414140D1414FD07FF %A8140D140D140D1436A9A8FFFFFFA814A86084365A14A85A7EAF0EAF0EA9 %A8FD2AFF2727262752FD09FF5227F8A8FFFF7D27262727FD07FFA8272627 %52FD04FFAF14360E140E61FD06FF84140E1414140E140E85FD06FF5A3636 %FF361436FF3685AF37A91484FD2BFF7DF827F827A8FD07FFA827F827A8FF %FFA8F827F827A8FD06FFA8F827F87DFD04FF361414140D1414FD05FF1414 %14360E140E1436A9FD07FFAF0D60FF367E14845A84FF14AF0EA9A8FD2AFF %A827F827F8A8FD07FF7DF82752FFFFFF7D27F82727FD07FFA827F8277DFD %04FF3614140E140EA9FFFFFFAF1414143614140E141461FD09FF85A9FF84 %FF858584A95A36AF855A85FD2BFF2727F82727FD07FF2727F8A8FFFFFFA8 %F827F827A8FD07FFF827F87DFD04FF0E140D140D14A8FFFF850D1414140D %140D140E6084FD11FFA861A8FD2FFF7DF8272627A8FD05FFA827F827FD04 %FF7D27F82727FD07FFA827F8277DFFFFFFAF140EFD041485FFA90E141414 %0E14143D84FD46FFA827F827F87DFD05FF7DF82752FD04FFA8F827F827FD %08FFF827F87DFFFFFFAF0E140D140E145AAF0E140D140E140D3636360E14 %84FD44FF4B27F8274BFD05FF2727F8A8FD04FF7D27F82727FD07FFA827F8 %2752FFFFFFA9140E140E1414850E140E140E140E140E14148584FD09FF5A %FF84AF8585FF85AF858461FFFF7E855A85A9613685FF6136AF84855A6136 %855A6184AF5A85366160FD13FF7DF827F827A8FFFFFFA827F827A8FD04FF %A8F827F827A8FD06FFA8F827F87DFD04FF0D14148514140E140D140D140D %140D147EFD0BFFA814FF845A850DA936AF14850DAF845A1485A9A90E850E %A90DA9FF365AFF0E85A81484FF5A36FF1436FD14FFA827F827267DFFFFFF %7DF82752FD05FF7D27262727FD07FFA827262752FD04FF140E85FF611414 %0E1414140EFD0414AFFD0CFF14FF84858514143DA93DA9855A61A9611485 %A9141485FF6114FF3685FF14A9FF1437A9A936FF3685FD15FF5227F82727 %FFFFFF2727F8A8FD05FFA8F827F827A8FD06FFA8F827F87DFD04FF1414A9 %FF0D140E140E140D1436AFAFFD0DFFA914A9605A85845A0DFF14A9A81414 %FF1485FFA9146114FFFF36145A5AFF0EA9FF14A8FF5A36FF3636FD15FFA8 %F827F827A8FFA827F827FD06FF7D27F82727FD07FFA827F8277DFD04FF61 %14FF84140E1484A90E6184FD11FF5A3614FF84A9FF36A985A9FF1485FF61 %14618561FF3D846114A984A9FF3DA9FF14615A855AFF5A85FD15FFA827F8 %27F87DFF7DF82752FD06FFA8F827F827A8FD07FFF827F87DFD04FF848484 %1436A97EFFA9FF84365AFD11FFA8FFFFFFA9FFFFFFA9FD07FFA8FFFFFFA9 %FFA9FD05FFA9FFFFFFA8FD1CFF5227F82727FF272726A8FD06FFA127F827 %27FD07FFA827F8277DFD05FFA96136AF8461141484AF14855AFD4DFFA8F8 %27F8275227F827FD07FFA8F827F827A8FD06FFA8F827F87DFD05FFA93614 %0D140D140E145AFFFF6084FD4CFFA827F827F827F82752FD07FFA827F827 %F8A8FD06FF7D27F8277DFD05FF84140E140E140E140E365A8536FD10FF85 %A9FFA9A9FFFF84FF84858485848584855AA9A98584FFA9855AAFFFFF84FF %FFA984FFA985FD19FF5227F827F827F8A8FD08FF2727F82727FD05FFA827 %F827F8A8FD05FFA90D140D855A140D1484AF5AAFFD10FF0D5AFF360DFF5A %14841484A97E145AA90E85A86014365A850E850DAFFF1436FF3614FF360D %FD19FFA82627F8272627FD09FFA82627F827277DA8CA7D27F827267DFD06 %FFA9141414FFFF0E611414FD12FF846114FF6014843D14FF1485FFFF14FF %FF145AFF843614AF6061FF615AA93637FF850E851436FD19FFA827F827F8 %2752FD0AFF7DF827F827F827F827F827F827A8FD06FFA914FF1485FF5A36 %FF14A9FD11FF363614848536145A36FFFF0E61FF14A8FF0E85FF850E14A9 %8536FF366136360D8584360D6114FD1AFF5227F827F8A8FD0BFFA82727F8 %27F827F827F876A8FD06FFAF14AFAF36848514AF8437FD11FFA936FF6036 %5A8536A936AF84365AFF14AFFF1460A9368584365A145A368461AF851485 %85368436FD1BFF7DA87DA8A8FD0DFF7D7D5252275252A8FD08FF8485FFAF %84FF84A9FF8584FD11FFA8AFFFFF84A9A8FFFFA9A88584FFFFA9A9FF8485 %84A9A8FF84A97E85A9FFA8FFFFA9A8FFFFFF84FDFCFFFDFCFFFDFCFFFDFC %FFFD1AFFFF %%EndData endstream endobj 15 0 obj <>stream +HWv@aHH(cHD28si}[39ӭjut8('b^&վ~fލ7V`xL2)F 6 b`[8r[dx8*y*rL$+T)x}:36%r8!<$vLWyDn(V\bԹV VA2IL=SƒOVұﴵH5Yi`'cGS3My԰I8$ +?@δ(C$ҍ$ď& 榄y[ +bhPpU"A༯=.@S!ANwOiM +`Ѩ;:Ia<ԲY|pݎ?Q1󖘿?0fC`9Rn0 ]0c십OYw4M0x+&(H[ x!)_TR]-1*`,vsvq}[cRG}L|Kcn~5L]@N4O/_A_338[;nПee8Q ډߋ +8%|pVNw7ݸ([ h-@:/ogQsW=䪖A.৪P-2(bمpWL> CeMnjhH |b0/&/3^D$5włT¨.OO*{a䠙^{95$㩰M(s +:m3hʘ8»!EM1!{Sa>\o1[}yyPУ +)>(Tƒ""'綁iz6qoRApBe1K5~8/m +pJq|i&5 M1icc]Dv+䊾O +rƢu&Miq7Ԅ]܍D3j";kceU6-]E}QAtǙ`@Jͨyw r}-!Vp1kd#K +F:H4}I˵E-NqY]Y"E#l6=ChN*г9"l@L2dSo'綉=$Ƥibjȗ˗-Gy@EpOlsXӪeWҘrvRw / 6TJw!v&(B7gD{8TN63ĬY"UƮrXhKjqQR- +܀6<*l,laFpH{*y l Y 97 0? ɂj'_6j4ht?f Nnj"]bR1Xu2E4V/ە]Do&WVs0Slgny!D FAxS keFb|,di +0CncDt0`ƎR ]SӬ0& b=i~JEhb5FnꡑQpy3t*Gʗ)XKbLFKZN;*?&|CzqZ'c8WUߩeUrmܖ/S)vUpHGqNRPn +I%+{4|Dv*`L тwFx+@(fS{eB(iT`+ȗU34~Z.g0ܛm@W}W|R^$mT_@7eWAWQ~; x]x䤓df_&3_V z#rǘgI +qƯIFh{H!3I4eGjkvaEx!LAMa*xcbˌJ'FP`w +u]yR̖T)Oe/^^7т@mM-ˎVBk#{R T\UL:#(;īRֿ#\V u*,EqU!yfP* +QzYӾCj/;eKۣ/믦)3jA W0d vѫ}x +OPS!K{ة}E!V`CeZ/l1Uq#YZJ!,T]W +@fy/{!t"X/Q!ˏ* +BB<>BbE'8Fc0Nx"9p' s Qp/o|"'9}}fRRo8KiU1u \h +$Af_wU, Wa4>G*=2x_W C)À~לpw\(8׫Y^3}?D2d>L_^̽DCfGX9}ݟr== UJ6^G>ŭ}`XtX< gh +r06R)D=)Mkk{VB{}%aϡ5 #l>SfkÌyb*G.5D'=l]͜X\MEO˦=% &pe#nUr?BϚMN_E-DrLIH?Rx7t8gܩLɧ챠C9-q*f>ۑIWT ${ gMMz1NQcrm| + h'!0ׁk=S0wZqzpwR Tǣ?zG|ZcoV J֏+KݍeͮtoYK*b\ckͧWmMގҫS @i`\:5'~NY礬è葈ϹehN F]KPr4f| oIԟ9fdjl[z_WFq,'[t4VJG&^>{7y@z{ַ}u25zSe|EY&`fuGx1VL-[fRiT)|t /+T %wW9 x#L$8$|AYQOGOtbݕ +Yz'ixElXeu>='*<?ηsD 8/asϱĵZ~V9 =Se^quPd+c9.}ΦW:J&Ua״Jtg!b_ye(m)R/?EbAv7ۂXfu0^3. o&O87<Nڿ{/1yq5ƥƅғN,jLN2.ߌomEI\65om ni `5LbTۃ1q1UOuqyT8ҵäԞbTbiIIdT*Imn*AJ䳌Yj,ՎTW1K&X44cK4&:$qn dӽdQ=pp2j=iE?yٮqWjq8TdR06u͸D&sptȦ{e._( \y|C}cHir"qKESb9$1&wLL@^X s"+Pf08ԝGO]SX&76'6\j e68J%E .%S>A$`C6r ;L  %Hi1cĕTxc\O }&][y $(1 aG%%Z>6Ea&[,SXT"4 H0 @g H9/pURҜ]6בaf&B:6ᎍAT@;TpmN%~ +R/8CJ!FVa,M$BTRBH r +,9! aT;TbD, CQH~QC\ +YQ{&xBdr(g(K˕L9ɔ Hx A&\(ޘD>` Dz@5 Pʕ*G,a'wDQc-m;o?ȷdxڸ ckj8Lo1>w)$U7$VxqX!./tzFm[1bwH#κ +vkoos\܇41Bkz A͵9@;S4^DBYnmS>5\kH9 {߅-^qB^0]=J +e>D`Jq)1ZBĉD‹i@W1'ҽe;^M<5i| eϣ'^|>uްaŌkjzz >#ؠcyhx5~3"zsiWPe Ws-[1rY}2#ޘ vEפ#dJzjR(gƦA~R{{c?\B5Im% r": uRȐ@(d_Hj7m'ŋW.U!gTV]Z.,PU&.A\aއeC}Z=KПpQE+`Ҽx!5ŦNQ2mirm>*U):|>oj;e`+}Ү;5j9;'nxp; U0jn#\:i!Lu ! !hQBM;>!֢KBmM U Y +2'{JFdr4=֨u纡R+ {"Ԧvg>X,T0j#Ml)7xI!˙ʙn)X^{g2b(,[OiEσRFnRZ=[nX.I_l~p2o9W!n/!1/4A!FKDs o{S$*^fXk*Cegwi[]92=tC'떈ጤ66E0NݲoCPm{!bȏD.]twyK+,{ 2|+L>te]0FA)!?,}bz垥sU'm!nr'j!ehyޡ'eH)`Ut;D7U>km[8Ցu|zmR&0Y5CA 4$ r 8}I/cnDeV%C2F~᰸,%v@v(bb;}3ڵ.(V΀d\-߹Wj%q1/΅4ݹԸ@08Yxi6QĿr7_RMwAL J@F<2$O\toƻ4O @&OVe41t\9Цcuˊ$xEeL:::MG)=v'O̾=Y(!Ě_#_o(9NE΃CQ6辀V)W%F@"/$qK=coM·3㘲c Z3kԕ$hGΧ&%b|ǟH̐X\A7Yr[7'v&UiD7]V?Us;=z~񺑟?ǬdccQ ǷvRCp26Dp,)w2UwNu2+k"N&7I >7d_b-X{S~mnðMhP_w{2Op@vgUNde)sqb0$Y*6s"eH?y;D$7CHeF3 eslO4'LJuZc<kST$ֺEx6񯏍]aoY |\_A趰tCO\`pIZJVB&=y V yT9zZk+C,A-GRjNvN*DġykmxSP8 VtU- yĿClÆtȪ1P[ xҒhtIu>0@rZ!`vu{#m)HbZ8x_"%QoNSKʆRJ,cY8C0GwCP^}9c4*&#I PyR 93+Kmy߰mm ?o}O&S)-/vb߼gg'R+viGV]a'9IcWΪLIby:b[^KOMswN?L,v')r(8E~QzA4ESawjXFP[DhwC<d +F3M#1eC]>Ѿ;,1=Q _[4xϮpjC}+NGNbD˵|;|~;~7fev1c )3B@h{I4r-r$/Q6HFH kE 3\//Dpd~t \ endstream endobj 16 0 obj <>stream +Hn:`S vMڍb`j-=$ˇۋS}H,(oɬ`X٪OorUwGàLzYT7]~?/ne#"}qFV bk3cD vTТp#n&-N蛪̃czuخz}YlY5'4OwY}$v3ش+ roy^M^^V3FGJQa+*Q.bA[X0*Qg]K#ȅuq]'͓髺CGԄ~3_xj8`fY/+ٰZ(,[)zxKC_w{0&<>Et6c[tۛsEC)+ o?;Z.4 뻋b"k۪s:1m?=?}]Ok>nzf߳aj;˯ࣵu#"7n0?ZG,l_7<=le_Mv^Vռ3Yo}sq'oݕ+t`+g>nW߭Xy\rիj_|[}֜7> iōS'Kv{/?3({||O H^:]2[3z4Q~D5S3 #aqselk|c2E8=5 t;XθT;C\p,cU .`@$i;֟8f ܱ8ϙ.v'ɞy*@ޒO5@[f37ٹGNϧO*6-U4ô5r:bÉ'Mƃͺ] '!Zv")+քqb2V7*q{|&tw-.42 xtQK, v$υl5GcC}jrx bք7+mHl呞#@ $wC{>P; 'Pk|-;H|"6ݠdCi'\9 {B}u*RxPHZ.=H `( A OPc`ay~CAo${5=Xh1hFȐ-"NթZ ҨEjAAu +t' 'AL:j9!6"'Hof[ek!55}MY++-{z&1P3U3ğ!2UU2*FibgВa<ߠC&(]yN]H#/M%?E7I(wtj{lwpz0Mk7rcLZe3鍏JjLa(8ߞݍl`$lbˍŧo&M>qIG 9q9{Ug"/W!ͯm:2[3z4Qd p !yA6Nɽ>) ߄l7ɝ3^8I/ȣ =/Xj{xơz{!{:d~16_헤iޝېjCCNu ?i›)<;'X1" $isR_  ;v~?@3'ka2$fxz +kؽV*fJ9N9(DzarOV|S>oo] ]AmA@>..Ecdsfg(!/N5iDC&|9! ?H&1.,D@@:Տ\wg&b͎A!lDYYEcn f^L,˲cw`˔HɒΩCB1rCNF0Eˆ*^Mv*eINpy!QHB'd͋[Yb[na&m;Ghc:t'⏷K]Iz5~-YDDRg8 ܊Yս*fvZUjEQɊE>'b"^4^(UҰ B )t! a  +D>pqj7IU/8lNq4dЃA&IϜT;#Cu'd|- =RO'FsU̦">F޳9TBZ֭?BN7L.ݨ|m7amЭ@ߎzFw-!şs{*ͺs9eoPkעgɷUrjJ2EމYJmgeϪM""蕔gvgΊ*ϣ*Z-2[ Dq$c١+inHbZ3Vt{ AZ-L7q\:Z+Q'8T,@2@1 qJd+d_RY@2J0 JZ/i@lAryvI$T@`Dh/c$,!ֱJ 0G0 ΢wePU0QP-xQ#-).Y-6Y鄥*wv:5\T7쇚6CB̭oC h=Z 0qmZ;=H/C>|#QaJޗ?g9?,s_GkG䧚K֏K^)z@t>DIi"sJWDvsnR=j_k&3&Kgq lG=oT?ړh 'ԨKV Ŭ؎sTuKi{@7"% 9CfHN 08~!W +Lě Yb-(I>GO= :e5ʫX(zu~ 9wH#v&k$LXX讃wF s(&I5Vubl8 ؉q;v8%6ubclbXUUbOlMlKQ, hbb2>8Ob!ca:l9ibhQ\=%,s>&_0%߉Ʉ{;_u],yx?hmwzxDžt5;{VxHgw^4N!Rۑם7M{a#G忾qΓz~sӯ>?}}~t/___xySv5JǟiS=ᑴjح5ӗ(c m'i{`\s,ZI׃p]|<lĄWsÑ(|[m]t|z׏|[uԉ+.w|/X5z/^Iރyri m:EZhr+ >DŽ˼}Tuq:c ''BZ WXg)hN>FU'&Az! ( nOd&n h (I5ܺr!)l:+uBj* \g;iEnڐS)$\PI&1>}tFuTap9C>`O.=4y /psz]ryqn4feوבּn4eL4X6謓k5FիNEU^4FuI?ՔS^ zHw3,Dkx/мHz=Wuܶoh7)XDI b0 Y-HZ "촗FI7c\CJ7CN> OB;'䠳LJ~Ɖȋh|>|l㬻+J1z1޴7;pK!B2WwE\p8D;H[̓Ż;~_?} 嗯oWooEXflP2|w/-Ǘ”ՔJ."]sUmk;ݑUyG?WϟW<\bDUAKX/!G[*E?1r]^܏v]sl7Fa?A|>< f>z!A8la@,h'"OFa[>0TC$*"}4D0\a 8`r* +!dB*Ba)pJ94dA`;#oA)p +n)p 1[$,ۈ#`pΕ9ҟ vl8/O +<} BA "(}plX +l73c `:g(Fǐ  ܔ˭1Wq>j[cƎ=}˝{72z8v@he;ѱg&7{Nݭ=f:_=7^El}vOa +{FLLD0G,e2PR2gBBeJ=J_83cdcZ:o6 gw-$ gf譇9TE  +Pv1~QKHk!>Z1,J>jQ5qa;,g:fQ5YPYNN훎*zPѹQMG盒7-ͽFlnvgz|5f[u!gsϩunʝ7pi.-8qH?܈=K0g!;ǠGO~;moq .g``+ +ʜ⟌* +F.-QTW=GVy'CT +7YAhvc@Q%'9Uj3* tQ¬R?G-SƲ=?.D7P(``kP>vN`9i z"rK=C3تNqdC>ť"ZO=Cg[]9<02<#͞"ryKL=MbD$it\weH)I_2RyӚNsغ"&,҂_mc | ~[{;PtbZQ{xғ :y,+P4'%8]/jF #=juqMjÁks-\bq= E3q. Bs z=oM2?y+_пw:. +ސf[:p{j_,"v%!ݗp8nO# .L)#c_ju(zhTԇ/A[k +C[4Дu1oPwib2|h|?$`A.ޅ'@I%  +!:4dFyhXh5,4g.k)VL, E߂qF!zY) PU!h!r 4@Fgԩ'誃Z謆*讄A lz N5@g;k"(e p3j88 u p3Z8X a9 "3G*EH/3,r.Ǭք :mڸCT8kǣjG9f S$"Bȼ:׍!ͰB"3J3J3J3JhB_G*5 ]J)֞*(lDJ/|n$L T) rJT)~!3tqu0U6p9Hb|@lkJk^#tT=)CM%[]ܙ-o.L knj*;0"(}pKl//@ݡ/AE0ww t a8VT5CSwt+_-83kny*Qjz +͠}7;w rxH5, gBTxJ}J}J}J}_a>11 +Y#61gHov^o{&'#['mKR8C0Eis AW R(g0?.o_~FncQ ;x ")d(JYEF/LsxIfgUeD{//k~E_*~$Gr~$7o(gK (IAQ2Bf3@vRT4 $ UHw HY4m;hCŠPaP$Q4ųI4ˠ.6@5*TFucQ3JvAfC(g(o2w(w( @4'7cC{0c0q0 0 BIà <lCp4gp8X [`벡X5j{2Ī -Ub7KQ=Uiz]!0+Ef>!!V +32Jsg&0+%rH ?"cF3c˸̜Rsevz/EvQ]UOtb#T.sMQ~?=9A2$Us;E>#%=ci2$"D͔MCNX +c: ā|O  i_C[\=`˅jYl1"l 2 =}61^:tCÌ5>='OKXB3>g.)c }\R5"7ibg;*gv54JpI: ^qi+<=tښc䯕'PrXǒ%K61fvt$MFW$xr\&buvQ}hS':AU֨D + I_)qvﻟjOxxTQR-)g|?Ϸo_N//__^ҋz/3Fs +)b8*66C33Nqgb+FhfmŌ9$ƹz^ |Cg8M51l8&O5#,9:'Ym +wx<×7Z-g4y^/._dEx!Evxf&iZƯ* +]1P^j3 h g!#(,F0!9r+ +MNI+n\UʓEi]|Bl_>ɈhlY81VP: )U9jN_/@u3)kӽT7YQ-I!\w}W^|}_ (F1]ҎG )A aG'NrF\OW!`|O%=ۗjѫ=սF]? HNy\Rd $ZIE0X'$:Y$=ol2 He e$I)IIvuS+'k'-'ˇX?QAa$fTie$]%ʪUF,(Jo I]xrAo|5tٻy;~~\toz4a]׍bƂaI9mٲ;$>yY@N :fub<Ҡty]|K 6U눁 wC~r(s(Q(#eCYG9AEQ8 PP A +Բ ?;({30m`O,ú8K2S$k7D_`^=ɹeWݙ^n[`GbI n7x.>|oe$ൕf-*VފcMk*-K cun .4]h3t\3vHkjau5aJ<㻞^k%^׬%^㫟鰬5uVXou{ wtؘdY,5ӜG|ywsMhyY%FK/M,4ܜSfSD4,4`K&qjjJJjjjk skk$g`&`1Qq}BB!^ +X85%ɂ]B^^Þ Z,}~͂$8444!4%Ff&&G+;g`S!AN@'8F<TR6g1 bOфHF^kg<ʷhҥگuVii*:us_>%_~@6A|*ɷ-~$q\\]x.*Wi|ou%d{+cڦ* )*^Y44U9?CA$OqW zTLX^</Oߞ_o/ө~ySNG;Ţ{B^sDRWk1H(U~3v/!QU7ͼ˚S{(}cE+A:RP=x֯0PC=[;n5qoa[ލ=Ǫd\zqv +p b"OvUVKyv64ڛvV-]jk>W.{]qP#x|׉eW n+f_|o QߋE&NAZ.IG4jScj ΚfguY1f:M4FL官EQUuU5DVvB5 U1< <pT '#N3R9JZULqEEQ5Œ-%%9cCcnՃgJ4e(Ls⸙kL6eD7nb(t$B =k}L?_<2JJBΐGxTզJ&y΂n褅NJ\EzRQxI$Ⱦ! 6(=c«C Np`@jT2L*XuXUb)'CW)8g1uy2M,S1:aB5㚒٦tc5̥qIB:NhǼcMc1jaO< +4zŘKP`pd7ftD[uMbːEu ӱ&zqh]TnL1ӲܐI*LaRa:X$YZ-)GlJ9bڲɷGHldk({-V/=e]m;YǍ3] Y#m>|V&`_)TעתoXӬ{ ~tݍ܈j=h|>{U C93 `,GPpH^{<k"߇ Oq]f|^}fy l?7ٳG v_7M.یJ˛[Z,=Ƌ \՜m!B<=F4[IǷŅ +?ƹ{%50ijarh_|comj^m?ܨVd|FFadѼJ0,MS79_8o)6X&2G<=:#z/VuH`R}j endstream endobj 17 0 obj <>stream +HˎܶЛMW .AAVY "p8)R{ iI꧊2La CC)]ptPAɏ~>BWAj'yaq/Py6AMKChxE(AC4BS7y )א,XtP2C4BM4Fr85ZmFy(Jˮw9Vcd9:8v#dPIb,QH$HI5EUD"c1clhZw!ϡ*<[!|(@ԝKGqtD .Us"o"#I㢄R|*6.' e93,fVDA.tͻL{Jq%=2ա­Γ<}y#GR9sZDdIrTJ!hA%իQKEc:=eh$`&+:0? +lo;ΡF(,$tplhȬlqL2I694.B)S@~JSYeMCgr̘sUy^2=^wAxdziB R6 P2 8 ` 7R@. +m eXr,#1TqZzY77yԞҵ]wkvNaJt|Uu᪛:x]֗7uek_|_! b~4@hseb,c=jk/HVA6: [PW/XWz@ƙX@uZ6Ѱm-o 8nE\ sb!ʺv3ABoav_JBB™3+qc-[PR5\yRȉ~հk+[lWտA\!m $zÊ0Jy,eT#a 6Wh.02Î +nܻ\&@l29]@E i 'j%3#pŠAK +D(ñ:b bYeV,%[솬R,]- +#X!wYS(з NӾ6Tk۰rw]) 粕E&&ƾpF&wM?P τ8Iubhr*iHQ zEu-^[-Δkx{qPP Lš[ٍFF~#"|r-7vѸoQfɝFz#6b.wFhzSkYυZkK|-Z悫xv$'Y]KgbQuş=Y (7f*XXGࢠ˜Iu +]RQ6^9(eGGpWR0ʱOH?$Jl{(nK.LJZϝ&Y\uvlr~s򍳇׋M!8J6'[MhsyQXM0EFBiBŪq.b)flcDbVH?ԋ@6^bldye`1BdY6.{Ȭ[׌f4 >hTqzDZ)Q*PN*R}iv~\8 H:Pq0alVBǵs'ݠʌs_V} PPωG#HĞG : F0R"V+DU-U#*"tԙ,!8 z0@Ӊ,U=5U%ڗEV@ϊUVכ@p? CZopxF}mYQG>c2鸤h|" %1oTᶎ^['c/Uzk'$'4'D'T'd't'ʣHgc{nzxPWޅ9ʗ 51AgW[Jx&Gj) z(L3w{=XdU,`¡[TʹN+I4zEA4蹎&"hR1cD@(3,݉E ɚI4}M'i:{rg.PQa᭫&dY*IEQ\ya$@(ֿ5❔I^W`G *OZ!P=0vnjo-r\}A;V^A[7d*i%;aDTq`Hp""p;%40e-)%7/dҸH"MKkYjÂ~eVڕӢo5+RkJ nfqDPXJJh`et)DP +)M*68"dd4Ũ'Ũq.R9N G=`gp3:Ģg|6o@Pk=߂6=~3 y&w4Kd2T1,Sov,MD9ǑEeX^س a}OfE pa\vRq$# 3@K`% ^jԸI؉IۍJTˆC誵˦RWm~S zasVZ|=< Xq͆o763û lAm Kq͢iԾ#k-VF|jt,,~wT WU:+5u O#p`4"jU<.33HST KrŰd,[K%5 $)$A8]TQ6V7S elEVXm :|Sw-;ֿMz7JY6G"դO\J&&\jM@xڄ`zL7c[ n's^x>qK_O?o.' ^>TP4g| ӯ7ݽ߫ЇΣ}-fדƝ/:m +[i%^E;sUG"@K)ͧ>xS!d:2bKW<92'@/m+k +(e>3&ղ˱ƮBc5bq[vzZJn*9xnaξK/LcgkcQ N{ôՏtt/'`D"|l`]l;[-]! h{냙/G8qeZ{BWJLJ\ +p[>rNҡb:`##n+FK71{O/6Sq4Ԁ +>! f`?hL7Ԟ-mx($(zcPtD$()}jDoEO ^Nxij3&ȺX|@^=+ Sh +OlNPU4+zkζۼ@ +G]]_\xs-LC.>{< Ox>~?#NCo-ds@ -p$8vu`) pxs)XbMF;(:6Zܟ33KFCc%P%qF6"V㲓ud ?P;@%>ܚQ.#"$y,91I%jXd/fX +vKi6K|]P)Vύi~} l!m9HCR$šL錿SIëMV_k86rӕw cyC1܀Mo(4;b hq~ +ȘEҡ^/(.[4¸5 {Bo[1Z` +zqu&8J$~Dk#/Ӟ /2blՒNWli<`(F@1a,Inn^1`cu+o}i4N+U:,fӃP/9W7sT< el*|Ȩ4Mƈ' 40ϭ} D1FX81|3x2m Y^C9Q&3Nc"vslI=ƹz :NmutП~/Yk_"oU0>H>-rg=3ɒ ZR!/BK!՟t;i$6:ɿuV xc ?}ṫ}+pG;Zq7fyGqDE>!_!{r"*^G>/_=K^-#\>>Uo(oM*SgutVU z |7;,unlZswGB[ Zo_!%k X 09l4 o??Ӿvӫ ֔Q[](;8ۏ8^l'%vų"xM)`,<4 }lbe220bU +z/Igİ'@dpf݇Ա`x?Eg!MkSf;e7`%(AVV% -|{ +< bdhէl -Iu7ӈ5ʁSTjܳU<#X!ku_۱pvVi(AF,*w2-uUtk'ڎVAnR@yֆW\Nں.U:"EIm4ػFq/{$ HFE km8h,tewY+/0fp}ck{QgG(X(sPbKT[i=jsB\9 ]Z.a{foЪó4N4xӠRd00(h7tոƢ融^xߕ꽟)^ku5 +l[k-9``ɮ4ov Y9p xyO#vE&,)䀃e{.׀꥛ѥή7{AAlhܾYgMYrtxC]Ou'*uK%hBJ91Lp @%38) VXBJ5:GUqak'9 +7673s~/zդfP+B@cxDni;bee6s esm)oݕr;$5ptN:V"Kz:98μݶ<ۤZ6{0"ٍ…1A{ߕ&+P|R,$@C;V34pj=F;Cj;89o +P$L@ c)`XՠWf'VOnx5'l4МUFbjNNgX`gV1y?|aM) ͎yl]^>m_Yxu=!3B?͇8y[kI1JKFyb`-рxNJ2mWdkB_{Gz(SzA6n' _f,ft 8Mw dQSN}QwnYkq;K.0`,(i*!ىgDmǤ'+l^=Fl0)eF,VЀaUgN'EB: $Ԉ P^ j0KF[vr JdKJq^z `LSj8;?6g۸иu ,gy!Q0Pa@*KbJg%IQ@}u/ihٶ Zh;ݥ@>w'-WxuLvtZcN3.9,dZ~|.YF1?s +o*V[ڳJ+9tf@=u g7ngw(dT"jCtKPQfV +LDR-lxV՘$i:"f6@eO엣m\k(p61TwY7覬e#;_58bKj^_,AT{ǿr،kA^uOr4 +e4sLx(C-%ك\N?3QϷ?3 I\1ݲZkͻĔC6xRț&x+2e/ZZjRr^d&ykK)MwSs7#wbX`n &1ւY<֨;ը.f07r[9!QaGL[7+ S!B+3Ȫ j,zːoZ0ST9?3N"3R/W9+~0bJ 9d; B\>~iK5 xJx0CEpq 5RK1mڷI0g!ou:qQub|_k yC8Yx5>rKU|?ܙנ4_:2CGkk^te VED^nsw??\Zb7I2;,%:/jw0(^=:qpɬ6K흘? cbR!@G#+'yW' uSg%+)5K^b4\r?}.X@D]ƵdyZ+8rZ0ct;GJCmE:LAl*1UpT*m(a ѡHc^qޒdV^͔ƮPp7xX5g' 5w,6zVkE@4XP}fϥU%#w4ugs +gR {]66me=&إbĭ)gKY 䐐vVk +RVjr?3O oE1ħ\ +=W+ڼ)qGazzl[HSP*3) sDob>S1{\oIؤ&`#2SO<!㤇8 ]ePf y,˺1ErYe'GzڌB|v*_-`d_k_a1WDg]N ? ?nZ!GR6/O\M +8.fpw*ڣ/~f@8xSkZǃ[uT6Cב!z5ǭe9岉\v]xd%zi{Mrh<=L&G6rm[&(tɕkC[L-GE<+B 0N,\䀡򨓩]n\;RFV(Lnrï"GŞ< }@9q+U: kOuUZ ÛDzij*8EEuthThkJY$R}|Jad)u9gΩn65[t*8X\2I`+|:X:`4|T2 мsY`'ܔ;\o֬?>k-B\1iAk>,JFc>l,eq;Hiɢ9)- t۹h69 1' m5ဣdq䠬295qa_B߱U_y(i5w7Xk,plg?ߚpo;6=hLܸǬӪG54@-9u)t)bLfIʣ|D) xجl8^zh/J"s -H=`$Ω|4DKPv4Ü!E{ȑ!fyB00a(A/P;Xͧo̓S(s~s,P7UwՍRcX_w!+d0o~#ڢϚ<\&8d$=ǁiw6\yq +5NߖqV{~ٻ ͵ɨO26IRgtfnWf$Ia^]e@UOVC>pNȲPwF`+F-ZΏk`([~+es +J F#4.ߍ\;v8Sjo r˸]ywV-w`wQ]ݲFj4_Zf*2uq)u+ n'h:p1嫯עp"` 'WӧPy Z}y5m&ۣ~uhBIب.XK+#56 {f>A~OvG,^'],g;@%\ Yk08%X pC׵)̋ՋqIGJPxz[@;5EJ dSF΀5ZfssH Vk`Z[GnEKh=tP4CB^]3'd>XNS:uj`c͕]#g!}dS:MJ,۽|ay/X#[%sˣ,=7Py?ΰJ4hqI8O <Tc`Jl u{c;Y zc{Fs-WRKf`Bp5M +/fR͖-DA&n{d79ƪu&%E  DMgU9T]o H?='2}xHP jd0P"l(X3;df\qh` IJeΐRD^TdA)0 F +Tf V3u=̢J2iAQ/1HWZ"(Q`3eoa(Yo K#.v}t|*Nfb SyiJ9#[>v@rIv 2޶)i4R eEmF@ +Fsp>1EVsb7|fKݻc qg8U#=]ɠ:@.lFz+ώlT[Ѧ@ hOԸXZF#zhąx6u ԴbnSuĺަMpީX`ʚnk'*V4 w5]3Cƒe[%7cj9Z^_.GpEk NA/Ҿ.Ts8ӫ|6A$F'L&ӆ՜_S]ik..}M-:[>_JpA:u 7<%ٔVhݦv.?DVLp&U['S&0{_nF%R w84VONM6u />5 F-=: :/5ɒk5$ c5l1]` Sy4_cs>>@Kň1Fvw*{Y!ς1 [ǂKv +mgl$'f5GZ][>Y5 35n}qv}#ojyTτ5A+rjd@AWd W 2*CS(_Bg%L`K |eâgo~5˗_?w?\_|^_~z/o%?o?ЧK?{;z:ݥ yH'd}u_9д8@0&]oF-.akO5 C7 `kEc_Q0L=~ym27=^r.cf& !Pf!zB /pkJzv+RZc8"Ÿ`k<9Y2&q$<D*<*U9H0)PmuzPri<;RS}+ElUNB@N C#Le's|J=/SX2]چawR\=xUHNBwY408vCZGzi @$=L`HU/#AzSw͘BDO 0X0s9*{OPNuAv`GPml̑cz[29%ҋr?C2:@Q*Qeb ae,ZWĽpYJVb6tu;ش{C-+<sR$YU+ 6u+IW [NE|GBQ[`[]I"sG]6})r +.(Ƙ>0,x OgPc }j[sQ S;O2ۻQ#}=.ɞ}bg::3dCy4uŜ(j[(O#2Q/4#J$0 11]UQ$ fM޵Vu>jeoJs[KD4" qI%/rlrqљA`);H6K3IFMm'9[=ϼ"MȞKv :b+vQ뷏%5H"6翵Exłh1 KTS)T +IQ F#f0-fc`, K-»ا@& U`w zNՂ(g$.B+||w4s qkR-"`,Bkyi\vF:*Z̮mVV]^OU`o >ȣQ5!y^E}3)Dbf{g + +*&K jE2#trne _ЫqeT>XNkM%_y|&]YiFBȃ^q,rL2Lϧc\\%ܪ1h%[ljTi6YݕŃER6 +jҌ +!({Ͷ:W|1{'_ +,͜șWW*5XH{.8Vue8 lͦehˏ>/믿o}?}B_!|˷/w| Ͼ_~ky^OVYY P+'F~o~7/%E\M[ +z!1L_>F0pv /:s,%z =!a]z7|#^dk_v.ݚ/cďj\Z}wй\ R&gȭ>fEj(S0?_YN|`{6hs ^9Swir /pӿ?j~g|Fh(Ȼ\BAZjm +, +bAsU36u]I$< /S;ٳ=#|W1ֹĆ+L&eRL 13AT<8 lKS{ +3\e`w,k3*jUgf\36q'&w% +IB<.X ~%(^3(i%gl`85ԌSlXa*GX 4{xPpXo=VqP l '.tEqt))T!CqАkXT/&,,CZ[,6M+;%. s gN l0y^ƬX\ &~:]0[n󖖁f6hjNaQDUTyM@8f`+ P=XE_sp\n /r*  2wK!aHةd\sB XZ?ooj\송ZL>b ![luM)(MEYx*/;5Ь3&SVdu Y@l}?.@Y ͇N|7b_I<@=@;c8JznK6 9Ӿ̑I@AfW`tg$-V&*CwZ@ګrD/&r ~wt rS|&e4t#A^_iav$"Yw[c0p;XS)~a4 c/ >ajQ ws>0u>%YsdCHjԴz G7~Effcs-8qZ!C l[r]&v8]P 6c{'QyメݕgG|lD…w''n )弩K71Ұ0J)\iK7|&܄l}Ƣ;)k$h +O\M+o\Hț;-(w;|oA?]tنa{h6+wd/<ͱ>O'AА>$Rgm2]\ʐLE( Q|㞧t5a24ނ!oeU|N[zUo5S1Nwՙ"W~?X'$ڽЯ<߷<?%i.{*D~M'h.6̀[#\@sE{n7XVţggu?`/c <1 lC.X ⯀F/iLb)r~O$e<-jq|,-tSO,<'UWM䣨Xcr{pUVkz?}Ҿ,]΋ +g3UM"F5ḬeO$ٛL]gSGڥa^YNkp "smks#NpXDۖqaߣMD1$Gఆa'[ _>Gq΅ +0Ł!*h-GV}bQ1:Í0TOر({7H }b%Q+Յc؄9ڲ]ASmW* Qz3. H䱘s=b);OI M>[ TJIrCTFuS. a^ w,jcg (h |bXT'ph @Mkw,f+DNt!N_.ǴHi6Reb~~1gϝF_k7NHI,T+Cq2rWC9!#w6Ω1^(RZ~8ˋi+T'99éDֽ@6 $薲SB.x~iL90;`$?$G +!Gt5Xob_͆(.\@'V @5.pаbu?ִT/l k'FBbhD#xԵ> X5-1ؒWU%>T|&\g244͐xAK&@:&ܰ"ىcanV gk@ظa )enBop./cILIVQ[[ovAxs~εᄒ4Yxde "rwffi짲B39ԏ lb/2 #?zr6XyK(HVvavciO=8j[)Цݑ zs9`6eo *_ +p%qV*|U\O\~Ha;>0Q GlsfY l\r,Oߕٶs;45QjCOh71!KPΘGd\:4d,0Ho,|~2m#&O+sh B(O,t6 +'v`K=7B*^y3d]2+ $K7$Tj +k]_lG^ endstream endobj 18 0 obj <>stream +H__ _=n[a˒e2v%c%Pc$5 y-9}ϣ#˶,}ZK:t4!3joR@:ƣ"n+,`-]`>$7`aD [:!GTiBHA[9(b>CVu9(,p>ɚ<n0vu]8! af"B3e%QpQPn0 _;/n)^~1J@#Z{ͺ2̭e,š0~4ljxzYA֣cؖ@K'M)1ZPF,`_i:0(+WP6Hoa+ײpPvAn^wX!XiVH$ <`njX +?|ٗԓmK5[X %"<ۡ9`luxm]t0ؙ-&p/3.Hl#ZԜVnbohN; neB!7y(,7zp '_'%m5(SMmᠶּך j/ͲA7'u=.ڻCCDžzRlEθE{ZB^&An&a$.2l8a"(F+Vဤ՛-PA\a@[킺݆+C]gV/a[N tw9L3Ou0>+-Ilh^n007jIwX)ai(Aծ#K*7a~(8Dt 5?\;Iie,R2pĬXuVKл Ww`uvYolj썇_,kD_}4"kfO+?{1m^SEdo\ji#g"8zV*zh*\,?zmRvlPh1 +Vy!sm Bj`a ^9"۬t5ftXRL3|ժs54k`+c XV&ɪ7}A +s슷]-Itq$ Nٸ* n :_8F*}S5 +i࢚}=uHdRnKzc~lr:Djz^N5:dRy)$PFylu1L «BM<8D_jjϓ㹜Wxtue:%@/a68$r]v;.* 0l0p3*Guc#$ PjIˌ@X|],UhCUڟVH|ynh1~?65c0yA*PHZO-ig+j1>^.zgs!g\ vahbml:$|0%DŽn>n +{g/~+Ƿ_??~|<៿>}*~ L/>?>=3i0E :tj*[A?G+fEQ2u6 CJz>ßGq)I2,ʇ60R0VPŴ\dH}mj )l4p.pSb6v=r#Hg \|*HN\e 1Pv";}Mx!J6q lv e-%yâX8pF! aIc1&XrU۳=Zjy̖=17:kHf5 !"#˶j%8.M +l +Ң`;D(Mqz uDNC Ѻ!WWXdUX}RACv6qy =߸ĬeȢTGͭPX +?:vÜ]N Ḩ MfKYZ9>G,}1@aJrE\ 1|a[TOꑃ`ivʖR *9Q]"{kJcW3(X+t)TGF*foy\qp<rO7Yl% #1%m5RMP{9tA5׶&?EVĂERrبw@\LQ.[/5SWI68Nj5C;R=-?NW klU݄7tH5_4Z$ $RJz(?k-*yz(.u0j,a~zZ +ߊ~>g,_[܀^߉S)A6u d{b,A'( BޟpB@^ r?pe/ oea, ZJx87\qdp)][_5匬jRvxIpP.m܌.!N,ClfUHh6Vv*q`ÌP5.>n%@tfa~l` RA4m).q?̜}kb'p-|lnlnq&˄";a\_#PuG s!4zaʄ*;XfO6~[>jSobcm$2Tdj}-8mu|0p-~چ(48eG8Xtj|z +Yv`,MArVx2ڥ-BVeSk0/@c"_y6Аkҹ`# +PhnI7V9~ܰOdZ ܓvLj!']+[Vۗ.Q(?:,ȄD_S d(_Lb}`}v]΀3XjU*vl&8N1! K|EҸ7<*v ΂uꦙY02`}6^?2:#SN쬖BMh"M4ⶒvx8ZLBC8 4-qp Ts&_7 LdIMevfgj0BGگ"*%O܂ 1Bp˂P kN|XuQ ;? +V0 RY0̈́` gYU՗'ȑ!۵{z*2B']GlPس +P{vO) +j(y1h_&mP,ahIstƷn| ;PU{ m(43C9tnC`Nu!>(ui-!A5F䘴|,8$Fyx*[pbڻWtױQbiWtty@<+UȘ(C +MXa*Y!]PXRjAn2/r[Z8.!UFN v[~0Vw3(6/.'ÆLxt<)<_Z25"`K3@1Ht TCՎ:2 D*H!1\jvFk]4*Q&4A澶(EQ ,R#ޓU Z~B'F P3sNM̈́?|07* Z}*h?}0m5u[L'0v4c* QAPMƎiacp*3 +*:n-XbJâpfF~0c?dD5 ˊ'[8a.6yKCR{06@Bt%i7yԜib„,6(kΠ3~F4]dxx^`p:@}qؒe]@b8A#EB4=^jcF֤yd}}B}I AX+Xfb%QX,)mƆzev vFQuDZ5 ʩ+Y 8liI=WЀȩ`K+sY@V(^zf'L۝Ij(&lcT񭼝>\&焳z6l.plՊilVQv'eaqgpOV4M9Ny08;(UV*;8l\Xz#i'{yH{lKvȣVJJr@}ݛF)2k`:F.ڛQCd`1 He! .66 X#h'6hGl;\0ׅKTĜnffd'cPgmjв ,0J*70f2?"&@'ҹ4~@X]ZcCv7,S +MB"o pZ6gF.W@M,^bGQ7'8ӢҹJluD[&ɨ&z޻>BȽ*~R|Ini5~g)gg_=|ӫon߿|ysbW{v:x{>p GѴ???Ə| ǯ9W« +Mˈf";jItw 1< +d#el%P Ns!s]cS1ue~.WFC-݌ȠZjN} XLr Y|z"Ix{ƴ=[ؽz7.82&mY] h˧uֹ@;z#EE5.SWeq̓បyY6!V7NO_]pD)3}B+xL^aZ)M,W,8n؝a6r7{2%#xv{{|uMA'?kӿW;]]|lzB>Bx +B\=_0<#N:ݾ' +EksԒ {:_i{Zಌu7oEJ~R ٯkzon7m%OwM^$ N9A*Qo3xL}c lztr{޳Z[$tmKgDK + +q X'BJ*eh0G}#Pz`TE(V&Z;1Ϫ}to+Zo^ˢ|C+pH #W޻LJCp3+xCN+ȳ"?'P9<*ۨQQ9&jyڣa]^`D[-W]B!} rúwa;{8H=rXoM:{t $RDvڎQ+]8bsy2*=zb` H FNʳskbs\b,<ܴ?kONu$]Z-u=BCQ~pQr@5&߹33h EL+(<@10OTj3'VJ[՝…KvuXqg I#CbkVqK#VϙLGm+#ҽT60VW3TyVO@IY*M35`n}#Pz`T @i1Y0u]X"=saeY,\e枕]yM!3څonxODflG +y#.P }7 M;} vz JqHrrS6ҲB +]CI B,+2sr֟id$ +9:QpkZ*Kh?wCh +iQ>w: 58UQ,eۅvƣC,y~XG1auE|V'|Xv} ޯCֆPh(kX0 e f1ەABv }dX4 KR泷K(Zs:EG>VS︕aYIY"7K#q + +h穞P@q&PD)6L/Pde>stream +HasڸA_v&;@S(&3M)Օ%_YJv$u?l7 #=v9sr~TA|n KcvG%οt~<?Nsr?l1zK^wW/eֽК,_ʮN"%bW'1 Wr}ܽ}_qSeu&$?)Js‰QF bdPnS ;TH:Vl] ׉*Q4o^DP!iճVZt=u gbӔ9/cvUजj Ux3\ӎ y1 9̱!0CDX2y8 *Lh8i*a*+(b"H% Il%[oAxZM3$e I1cqIY%ƅdQao+zdr/sQuK +Bdzg©:`"*]oҮ/UU'X| Z4$x,cx<]]P (Q@ųGu5/W|?[&A&E}(U1+*U%99RU%!9C^4?կ76`iu_\;{&!;RZ ôФQ,0#e%uo{Tc_t pYu'#eذ`c3,V [Wrz0C>OVC:!!^u% KF*Q\[L]1Mܑ%\Biلe0RnxT0$%[Z؊|@ऒ +%[oAx@4OR3y@\Xo'Ħ)'r$lir/sQu[]VxL`'8UVB$ASC얓@|Zr0ahS/"096y~[2!pC'l:_-Wft4 \7|xJ(\҆}Ω4hpPn롺BDP kS}EվnN'B4TV+#gqlZ:1u>|R. Tee磒.j**DŽNeP I՟Zi㣳F!bUzl^-C>OVCE`jЌaC?+P3:T{\3nЃk38Q@޿ޣZh;Xl #mJ{X|ITDy>ພpP %nPB [TYĶ~MV<oNRvviN, #f 9.) ȸ%ۀY 5 7g( + +Qio4{d&qFj= +1eV@=N\Xh}Y$z]}TP\V.V*NT} ð:`"8}zkR$*aUxտ\ޣM 1<@u"#0*4ݬ?X`FJ4R=3@9 SfZ +υݻ^QD7]:IqYT,J8zZ&\/R{xqRDe^*-OgFӴ,ne8zSDqd ucW6~EGZz:IݧtZ_:V#,t7jxs ud$9-NއZl/;\"N(yr~hO461N 5Ci)ҩ"r4n~7=-$<cIexai#eT`u=ݟ8Fl:J$)_}yRj-Z6ʻɇkp D.2@w$-WkǻV zs@ ~Nl8)2/چ,찥ZB~Ȩ͂vM +]͒TD&y[p:6VߡQBu˺b* 1i.TU;9fۿYBIp=+Y;b:tӴhW9*6Iˤ̲s]"N^Mm-yXq4n27V2M.'ETECd\xD IqTFB)[JF Z%jh*,)z[:,:)*̌]5u ͭ_Y-l;"j+̝ʤ ˦ח$.4¢~UkxP첖*-.o/[88!o:{3F'SP) GQn׋mU_tޏҿ|G}1$> A]}Lᗑc~7(9'%CTtMPt +$!ЀR.%btQȤVe(\S~_3 ā3G*06vl&ВVQ0506"P\ʐiKqGTY-! %2PR&c&lh{DK*XBZ(% jɀT"l@UI 46tSZBV +A.5B Rϼ}XnB| xlԳ`X:p3ANnuM h06Tl`QxYJ̟7-n<-T (VAӰ@+fcQ㱸if|8k*-, `,:Ќj_Xb\ѤH䰇? WS@y>s+cZ.@AЅCFZjRX'U0\ws0.03=P:r+qQߡYÄtQ^L@փ !lhu !J)pGd4॥uZnPCo@2'CN }1ST̠XؗL23!ݹ +m_l{:^HNET 8T|xՠ}0N.HN^;%T +7r dYB{qz!T[AgwT9S!bʼnjɰ7#5%\|NSS 8@V@K^@dP*-wP؍.NիGP; EQ +J3y{Y>p&ǨwoSu/S߰g|zbwmqh(S$:! :?~x'Hھ!m8-Y;qIhƉ}kva$̘gAga59dM@E^$шp)"z\8Q| d2g,QxKz趴Zqx}8ه,Q'㨌gǃh$ +3eO]fi1?; 'ߓx&ԭ+C̥1YJc)t߁Daj2JS^S}z*8鮧7)f7)c{ߤ)g!( U %[j.a02dE5=(g֍/0EBa<XhSWnG_hD<`9Fp)1`B$#9UCr(k Dg.6UMiuEI>0Xt;ܩMrB_a-&G^.xKJS)(H P1ځIabI>:` |kO8P2>y.K@IPH[P=[ڦh"ϵ\r lIb U+sVyޡ%YG7E4JI߿{ dx'mBͶD&|(RZs⩥?ڟDM3fj | @b,B]T(#KPk쬽bf7C%/S덪6I:\xPS,}JE ![/QUvAFRVגW6"+)g=̦ZVa +m]gPjܟŝE1/菳OAġ#&+>l袀.btIɉw֗|پ + Ebf_H^"rgf[.\FGպ ]4!?ϫ^wuyi]"EHd"+B[F6 +Dx=lQ +0~PtaRxf_:t }Б N+/9 x"J0}.x8ģ4Kl<۾w+&9W\V~K˵mp$Zz/=Ge˙L\m-I7_!ܢĨ !Z Qό 5i,wl,u)D%^"W7.M XBt+@SS,\4ڎAnU&#a=5y d>Xzq*Y?cSkҴhL Rd O0hjKjWY/#.6* +Eɣ}-^_j~>Kazu0p56NN^I "To?-_ZMǗOF/zat~qNoqXO7wC9h>l}X8:ЧjdMqYWj%CH8xt`gR|,bp] eM~0TWic,E%1Q)6:#"#hAU'^Y&hY~cL1T4<tl*F9AH ikjH?PJSPW 4Z eVL!Y Gq-)8/V@6} A (Bm,*MF s3C#39 yYD!^0{:9Ϝ ĝxiJЮG Tb{FZ2_W&DC*zr&!)z@P&I'5B +07l(ȡe!Dl 2PRpoP=~A'JtYb= +萐H3y"D{+h"#!(Z'uV׏>Ml{har=%(2uD;gvVY{&X1Vi[ >*kx va'cqS.kBF@ WE"(k1k-K﷖bťF']tIX$(ݡ~85tNT6l]A2,5+eRD\`=bQ;"* ҃VUqAgw|6m f٩w KP q*4%:fم`vԂjQ.a;RP9M0?>Y^9>[O=m|ڔN >knGSʹGEAފ_r'$v77ETME}͆$ ,a(:K˒w$<Đ AƓ킪f5@Urte |i_hVj#ۀ+B 'eD<+hsDoY rXqNC83r3$ S#艃]$ʴ;u3ԑ y)5824Nf +@]TLIL1rSwVekKv,,f_Z+ޚl,BQV)R`jF~>9y߂J)2PiVR7'QؚҌGVgYGRQKS4>d>Ӥ$ u$l}׎0TO~^|>7M4q;"&/="[`~C#mytyv淟oXޯ~nŠB8 dv0:zvs|%i~۬ZS'ُ݇}vmO~N֢<<.7j\\-~YXp N@;C&7uqz.t7*@C>mFX):Us=YOr(M]cSַg Bt7B:ޯEfohwlOߝaWS/c_@DDtEbh"F-32LA)̽ \U +h쩇NQ)ڻ<`y/PJa V + ;F 6PH1=B~2h:F[ƚdJn(}5q%XPAn*³&MpnZkj|}YDz,]NL [?̗n\EoF +q긫J\4w{BЉp"W>8 +%]kתu}^JT3Hc*63yLiZцJbkj]W4;M~o3u}!`P'iʶL@ ]M3%cZ/q̩|æF5!ngyQ +>sfb+">> Yrt4Ȅ6*kA1/4u@#\QQ󾽠B6rQB3c!lީ(odƪpiT!BV2tU„T K$k^hlK`ñM}urfp7&Ym10^Bͱn6i?OÑVOӮ@5Vue[ݫK}X6ڡFamTBvh}j;M~rӘx[͛8iހTٌ@䎵gIP{IsDNc\`?m?eSY<|6ݗvJEjGQIG9U4"pFw5@.=@&G% /mK49SzzmO:kwRo2#yׇQy#y'GHdO,m &BMb/GȦykOGnA EwH荁I^`cgdDvQHma# ֐%13iR:هZ]!ҰJ* "/yD;\+~R: 0fjBUx+wt`i{>Gd5BL Ͼm6j>wRPd\kM8L=)#0JvTe'Eݱ5 q4F TM>e烺שC&Y AH˔4]6g +"K k`g?seVxg_僗_^g8'/~7?nV o#KybϮ7o'X_wi뫷w1gWoiЏ5ۺG?'\޿Y.7o/߼;+.x"bPGX:l/n?((k@C.5]7aOZA=#ĔWD֑w[k7}w2I\.I@^/eK8~^Cz`[XPXkj, ^=zLȶQT QΛ)M>"[ӇC[+@Zm%m@N{dcpa#@llHН[2f&ruS;Ty7ET$Qu!f\dWtVtQo"jY):pZ{2RK#IV$L6H<@D"RR.E4{Ti6/V=ߪ#ky|x)BQr80Ew:K?8%$;Og1OHIڈ%=3AS2m#яO^r{hl]|Pm/r*!K)>P6˱ΈDW8'UVgE|Y9^: +Ec*D; UfpɶA/pTBA\4ҙe6\J;UջbR8V }Ee']7whVFi#E=xj;y.@!6h4ٹقiQ] LCtak&k˫}>h aC.hҬfw-Ll)|ZDq )/+2h`tX0'xn?9 Ã6!ԝ:fgd]+ jcuhwVRuwSB+2Q +Bj +>gL}ɷ&vّ:{N-dZKvٜd3O[jV_udKZ:ZU5dRy֙ 6$VEQyl*| 2{qΞ8u_mv51x+yF|f$FFo7I6SX\v#ߌ br*NEq2?wVQyeJ$ cŏbG.񄻷a?$_{BU7UĪ1 {]u+'0[[Y1C6 +%(I&GM\ BX$G['4AgQ>Z2BE*+/l~}qYvK?hB//óKٓ?~swxy?]{;.#kϮ7o'x_w~L\rqCT?[zX$O~Ŝ?>vq=ys}9y^~\gec-uj66X[rb]"@Ͻ*.컓md}\*ܽ^ai1X:ť$8b1_&qW~C/[5Ȋ! 8,Zd8y|{{bՄP @o=ub$Z5!1e{OߝKCIҡq tT>o;`VN}d\!ڜQlnfՙKKYc 9իv}8nZ[ -PAt +wNڙNr_z|B}EEZkƝ:g-c _X %čI.WT$\c|LM[{7I+ݓZJ{0W]pފ gZXJlI X?fȊk'j IB jU3]''dv +Tښ#EnZ3Oߜ͑?@VZ&SMKbc7w՛OI^m RJ!fuT7kR"9 â`Ql^b93۟8K_VLK{W,`L*Ҕ}Y9sC a,UB9 b\%ڋ&`(IR63{m]]1/ւU|$(jO.[#1Yh)g\NB .i-\,{2ح\[*+YOW+IQNvwVSC+-zհe*_SgAOS߭;0mEJ6FvyuC]fݳFKucj1jn@*@:)@\~#F+w//׸oJ3&+&t$+-4/l1|EJaW{쮃gfaFeCfki!YkLۀ}5I +̀}?-G=x +_ (? +O` 1ނ,c|De* k!ռnӞ %h jl$5?@æN^IݸVlu$4j.,bJ lc6Wqz׼}KӾ\D[)R׈#%򆜚6 Zkkiw,%3BUN]>l"@zXRZ@gG! ɸ/.DZ'"$ЇWM۹6A9'*܄fH"HDj?ڤ;< mP y\'K {2-N5ۋmGՈP11H|6ҷ| +>ޠE"mxnw)GÇWX/oΩ>O|fv"OW?b>qIڹs_ۇ~_ŋ4zl]iG/z7c뿕b9.^7E!F9Ty`6yhKsF4K\;uKXcfηX >~|g=< *{, 4&lNo_|OERzIF65mρm35lK= wջ3#neV<TV 26nY?y{6IW+Ӯy ~޷Q՟t9"8!+ZhQOs Y\T/XX|VTT@*t?UOosVFNB~YIĨoTd똿2#(e$!ym֔cuB: +2vP%뼎o8\z$]ʱ*U էl3Y?S=~mc)EK*[Ut;[D‹R1K)j-+zyZofzl)oP^78@eEF9[|vj-8U92^^ў%(J5%D?Ӷ83&yI!ڢҐwdItM(Al*;bd彵0,˅iS1"Ჸ'eve˟Mx|,NPB}ͽ` +MDgbVEs9Tj4nWY1sJ.Esi,ky5떚^:ҟe!hE*^ +o~ش0Zi mIh\F`%4T&6}btj(#GپuhjPDlGGKp3Kf XRφ+gQKnS1ZvW,UwV;'{6`B[-:cfɞhu}a옓Cy!|yY(bEyq +M]7!B^"C@n*ț곝plxKh(x&V$X[,nvtasWn$Hts`+)RJTP#ԦΪs]Wpn/U] T(\ɵ`lqIWȿFrTpJ呎9@Qub4J 4xw5~.GHUq>/|yeQ?0y9B3H:W 4*8Q!Yl ji.}|>^{ B2ţ|mu'޾y>;z/?,7vu;f̌ug|}E<;Y.Χ{G˫o'PvWg$~z{^n:v{rj:]ΏWŇWR!Ky0t 3wup/X~6og>=Cޯ&[wu1ڄ^4?׫9wK.Y"D/Nf\QzuA iBŘ!y +ڐKO}%ͱX0Ea|x:XYYُI ig^(dN27[0 ߐsDI Aq;ܗFw;|[CUðC~zHiܴFH_ )CdQ3ĥi蟑ϚK49҉Dlh)J;YՍnM BpmUۈK/e$[UwafkZG"v/c8 M\02b!T8_aR"({gÓ&mѩI1ͨۡ&5gxG; $$CV zb<5y)$_`\6&(mބ d݁dQV&x"}گL46B 'u:ѣž& 8hۛw)5u(f޲6K4yф /_Χ"!6Qk9GQiL lQ- kKC߷>VtrL'v5# -$! J=bݓzxȃ*=\8CCc^bN\&EO3ԡA^'pl LYp0MUSޛ! ^tû#*IR3:]`Q4'(+Ŕ\~z6Y88T_;DqN>zwl;M,(R (ּk#]n2Tޠ*rqp: fZ&2[}en.8?t K$uI3*`m ș;]{5JܟȹqӮpθSΞjTF8`uDX]GZ-`-$4U9KU Gtg/𼠖'Atڣ!Jcqz%nߕS:j9ڗ/Ҡ3nϸIxXum}BSkwQ[qM#пGO ID_V#7<~"L"GQsξxV}MkO>ٗB;xR@PfsưQl.[Nu09AG }=tTdjBC̪ةN7kO5* 9^sX4xÇ9BxQ\8:|mN}2}v{_?^Xnvn)v>+iw .E+>;Y.Χ{G|WNVg*+4r>X=_t/Ow| e9?y~=xuyX.Gh+IHRPc;p^mG]a}cs:jj~698v{.߾[#{/oǵ Sƒqi0cL4>ZwAXаŤMtl i|o4:,T|;j)IkHVл' YY$TX +x=)2^Z~ŎNϵl0eR~Ě:uB  +^mm-i|akN`=Om<F 3Ȃڝfh myIF +d=5t>0KAd86cIc6I9DPΑgy5.rsBFdԇ 숪LGOgM$tφ# *4"+j}.ʥx-y,zA%>Y8=O"K*81DB*0$df8jsZU@ 6Rtv O%;56PD #%dNRnՐ $o`9.gh 3D-3mct +$N,JhÌFjqE告8uy2ߚRkGB,fPIlVgH(/ZYIh>.|FhC7Ja ȭ$-<[P~,spфbwހQa,V!HM (eYpcB(Y8gZov}q;e:COxg5rJvR@9qLs +ؚ/;1?UN[vBV$/Zъo^c7)Oc~<3vqrN_ֆf:Xeis| 7ІذWɝB 8-szO)-s_s/_Ӛ3m)}wn5:&x.vi%ޣ+PB%[hʞk/#O?k+wl9zmh6&Q59ғO(h"1?6(?J=Zi4a|?ǎʑc) ܥyO%no&qSvVA8CUC q8.c/Hcn=J tA!ˤGdtLx c#D8USe:-\≠%֢ф?G-#'1@`r$x,ؤT~RBƦ7d=|+jBLOG[\~^ V,<],o$]9'w`!;%JxaA35_W2 Jӱ*Y r+qpr'R>%|$~AM_-H]L6SaG_LUI# T)Q +4ɐ¾X +z4%gyT_t #=lCC FJhsƯs*uvY[ ҆`y X7W9=~eX!n إH})9L H>3kgwg<ћ${ߧ x'u +%mבq-x +FhFOG9~w+R?|ר_D?떃'cΣ*O۽*$U1 +蜐V['x?iB>|(lTd GG'~2 +ܻ͐m[ i7EBS^LKw &DMӅ8rw-ζ +ԍA;D#lp1la5w9PF0w +g"zDeؓkԮw[w#TZۏ-xUGVsZнiƮMS0 u`cqʲ+ lRYzj]磼0r\k`zY۶1 +Jr^-u5Mَˇ+s!Gpp(;ϥ_ExFVY Ȍp5m /ÊNg+CosܳFg/쫢*3:\NI,=crC~Uh;=M iu q $vk7@W ߗً/0p;ܦPj~߷S,k}.@VGr_:LH֜㢐G찮8%g`odnpG߬92ce\:ᎌ$8L_i"^U$QQ ^bPva W8~5yОϾ3׈*grXf0g k]Obkx-_i=j;؜&x+a\RR 郗ۡ3n&ղ \Oo_E'd٦{XbSzB/xŏ4O(O}!<8[\xjEU'9wwMbj"҅A^@ ٭%F_>-qzGt甎dcm1j3+@rpf +rQoxYom;ʼQCFD?D!㾑סр)Z09__~=s!gΙ]%՚m՚. +ipCw?ҧ\KѬ{{0'C endstream endobj 21 0 obj <>stream +Hş`ޡ/'IN !&LB9F. $zd68v.J2b>Ӌi\rn둋u ~͒ޟ<fVTꨩckb5(:1K/5\^zUϩY0c<һn khaC1ry]ocTKrgS\z}?^٦fu1y1<xj壯% '?g.ozLwƊһM~ߤ;߻\޾՛'Z{7&#//N=ξC=JO |;<lWo(rgS/tNĢֆV.Ys֘ j{ɻ7Wa +0u/ 2VYtL+۰Ň0 +VDR ^yVQ8iTgJ!T`c55Ӧ쭇ɝ[M;eh:wMJd{ڏ!'ej^Gl-+sQɲƳiSO{r 4G dSХ1h+*Ah]:Q3UyH +Jt,3(tѻs#5P2*.mr;2w?%+M e;-iLnnZ;Vu5+0ðv.Ś~ D|InTOC<>+O?qorVGϻH/Xd ^^+Dޭ+K4 +k +vo$XSfN_7m> h"/鎾j_M+q*@Y;QCdzGmnC`NānM > #׫gÛ̩j]a) +$bˣ3$iSKgL2UL2@^_U5nJUA>[*ʊZI&(e~OJvsKf +@+HrB%xC(SĄ'h ='}%xkWqљ() ‘.C-i&@ +A]oS"{uV%/+Wʗ]|Ir=IM +Y{BZ*%CwLd!-Jь>Bb'EΚ%Dpw41'["fȀ?)wHhbj wZ&: "dRV UEtDjBJ BUp;5#7*!1h7_~xRMEAH4+`ISϚn|[-ᓪJ[IJQ)lDEPis6&6fiҍSo+ =tnz7>ӣ'/m6}r/߿w{|oZϞ__޼zm_{WĘv4rߣG>w?#:ӘWB^P.Au9H#}0xiH ؆0 K1d/+k\s'a K%$K(&l52!,ٚ%KMuJe;|=q$dM.̈́j(`Ƕd,KJI^@z5_ľzP=>9X Y1'K9sJ,C#1zD>G񼆃0v< HԔ kd7PEW.iy@ֵH%EbVR& ,SA]LbMSUoCr|B 7QQm&! Drﺭ):JȯII t` +h`qA1Dt]cČ{nIJXoc郙j!"ƌB#Y1(3 +]Yi1iUS҈HR{\9?1$JZc%HԄ΂cN[M]D#cZY?J"%0@Զ9_b4t7D0BY CiʔMB2VQe[b a;#b8R-@C52,x[3/KEnjvGVn(Box`W$*)*!dF+ϸ },< u)q߃_i=+&W:4mrA|vJ2j01 -;9ԋ9Itxg;̈́O50_@߿=ƭ@8q+M:DĭtzFt?Ӷq3? VGC#i'2eaU|+IQ@T7T4&ÃYsHr_xO I9!gb mר|o:*l7ځ9uDϯL=5o@ƀ)Q>Tfk"өS!}Nsf+)omEceY$OZ5^7L)”YأSrU_ns7zÂ%=1T G1qI38["~=xl&&ZPO*'_v 'bPeMN]K!2ZOȭ1O_dF_ ~6ufk_}7s(N]o4u!^s T! 7fnP7/[mr¶q:Ao5mXuogi7V +}S`W'uM%<>z2SRl:GKLf,߈TF";O`{hlQ;HCpQ~y?u[k*8p~:[ڲe c@ IIxhx0OI;x^؏S:R(Fo@eUlKap]֐5DPh7#0jd;A!oHKO?&UR`f}%fkNx d,, +QPaE-xxۋF]%KڗSגIzƐUɭħOGvЬS,NmG S1 nB"(1h`=@Ӭ׼ {DTDjqw|o"B@~"" HqJU3n (PDzZA`('B$2XvQaupщgQMmˊ&ʿi B04VXm2`36\O/osT@9b5 ԝ+{>S  +>U i*e $;pXʃ+,D6 tT#, +?8T_ݶRBx={Zrw-|uu萣W;f5DF&n{B"{U Ԝ%m>ߎ,): + ?i6h4W s}A3%c%| +^Fm#a=p>oj*ξ+NGZSqhooyFӵ!i_s&c\ٶKbBOh!8 dM ֭e_՜9êgE!OVz)h8-YOl$]3@B\R{ +(sCCW7 ^z$4[Tcu}HQKZ +`/*8d/jB9ϛDLyP`T$ fjc#\*Xn#_WT <; +5\5 IfQ-ٓJrکtV`d{zHZmA r"(}Hau?9!m&t[׬ȼjGnvIuT4kRozTPT+9U;( ss3PCuVpy>O*rT)I4*.QX߲\WQD5L,-:n"(j4tR@=)@w[ -k1 +Grh`xqqQ:\C\eu@ VGL]h6#Ƌ`(CڏOfŬ=ۭ"γ9zWK"ZzP'ϠDy+U"9A ؘp}dlIMEB٠F 0 8hʿU}l}Q}_5  |4nEOgƘLIIWx9%JlXlMɊ}ozNq^r `'TTs]TE MY47%u4,S +OrKEvdN}Z$Z䞞*?:Z:z:iz]0$Z;"hc#Ž)dcߟ0xwHlA!iQ0ORq_$C!v + 9wnVd_ZݖLB7s5Qtg=rIi؟EsUO -JkYi9(3k?TaFЫ}~/;i=}s>~ׯǗ?^{>}TUbHc50"o, bD35=Uf3@#@]#m(Te.ejD +Ҫ'-4mj#O[5zuh[sQ<. !q5׃HYB`uO2Bzmi 6z`*21z +l|Vwxljnx*4rHPPHFff"]L&rMg V.R .Ds\gLL)c!mrGg)ŌNS_.Ae^ooa " i chQa Mo>"D:ЭNi:uMA!=4Sy1%$ⰓĊ`v#FVdeH-`퓻IMج i/ihB5vUK@,*WsX!hbBi| FJAaqWm~`w%6}zb&i}-!4{ +ՎA{GzQܞ[Iܼ-O1Ȥ6y;~I*f +p;&WnSrMO]n{[]if$U)bL^27NM:1T$ދq w:x<5(2x1e":2!!Bdho& z@#d_?Bl-3|,|vԖTSǴᖲݖyɬeJ +63Gۉr_<J,hB]74}s+ +Q'h +:$BMxMr7.&[1T4ei%DMйv)8e;/[3.FkKZ;R*l{M"@4n@ @͎}2|e"u|TZի8|aMz d"!a"W*Wʘl.94{tjJT ژVU A:OjaS[薥hI%7 Bl>s#&cT|6¹`J +a"Mn9{dCbf*D{OPοFŝcmΣCU&H:$Ys* nԝHsƤ)U^Ib"*6 ws XMjϚjt-c<7Re,yFE]lSa|u8yo3W2⪐^ |x BC@ ;BG1rPEf"WЁ<7snN'jg_X69* +@wii,~tcbBʐO` +Vd'7' _N*LM ^]L& GrIyJrOw˝8<~i..&BJ${JbW 4}ڣZ%:,gY42qwpbx` DLQߋ,z,qjOKb:7}rcb( "yʁ5! j"&=j^4 n+o:Ib01d.y2ЦTkusQ^ŒܲtW9`l} igcBE*cJy*ZwOT$_wwة,&rh,x&T/{sP?̳JOY F[p,t;jr2ma 21P=8C`xFZǵ6#h\awAfhO{f)ue!0$աϗ왤Xo " }K$|? +XL#b#N<8 z_2BnֻG3q70(YN Ae@${|ɗM $=6]!8ĭ4^JQ\{Z<0ܑ,1eB! ,j9*=uc=?zh> +|GʇӬ82M y% U D-)BF & _>rWd$]f&(uIrlqǒwE)h/F +Vj5Cq;YN/3뱘|2mIHdMAѸPL,c10e)mD:jT#+$9K^HÈȱ%)v—ihbRl_?6}ZX98~kNTw.B^~ +toW Q]n~^0f`!AMu;i/`IipF.nJ"06 P,;ޛ 8G =qVԀ~gG/=| 0:5iUO7uyZCņzΣ_(<r|>gh)s_[T M2 caHqD˴Nˑ'$ON3&3$`=a"}f(`J5 z>a ROeY2a6KAm%_yF:!I/n7It&,و隉Tr~Kt/(;:r|^nxf$/p[>B6%hsUOB%t% {)`e'-}ne<gT$ޏ^=qbNJޛp% eBlD}NK#4y10Uף?O В GLh$KhXݓ`Ykf `sKO,;N6lؓ9oRި37^ bl?tRpդ%<F2>?On&Mc* $q96{ǜ}^Zq=a&kM#gۼ69;o(d<9R0?_A_ "8ŷnL9E-h@2; :rGPn9"["հy^s+͡lp2XXMP+1ˈb@ f4yAmM.Е^t֤JPLY(k rūd|T@1\s04"35^IbbsdPEQ`&ӵCP$k_V4bY! ګ_ {bΎUz#rYz>vHW.+%7B^(JWh)U{sLJ7#s4zJ~w- t.J~6zup-J60z cHe]/:9Z׉fԛEh.N"sL5KfLY/ᡈyԉ+~O?ӥP~:W#v"HnA ޽xo}3,(e7>. o )+Hp'TԝVe&b4VS +$pa@ H)h'Gk>3QP;oЋg|~hyH{OI/fvcH4;N^byS-Bxh%w~-WWpB 3E"JZ9HIؤK?@Cŵ9!+,w:0?U\MluSۉKó|o@&Z +_ +*P/=0sc"[3ʺnf`}({ѩѢ&#*c:ryQW->,I\y)ljzC!EtrS\ !Q} {%yDG9Fh%r=8=!y! s7s{G)k9G5C:usb1ЖPog*Xƺ8xE>B|n-N`]W躈أh}%G0uU>#jNHYD'XI\L+zϩ;Q+ܕ:BT rA2%XJ3/6{S|9J2HGة4?ݟ +K5O:ݦ$H*EJéE̓1o>VUp{ϑ_WVǙMm\D?NT;/@[ώSpLͪߦ9cMּqo<<<󜈨* ?%D cӻ뿰]&C~gm]&7H" ǽoJD=$qNչ$e,iX ]P(@cjpy/[g`ӀheF=8\}Sݤ#dkM0V*PK ?`Q׮CxQW\_ Hk8ΞwD{h&C0o, .^Jjb(Pӑq5=X.߫@jB@p{-KձgNu.l w sCY - &m| l%Sw%<؂QAzkIn ߎx šw{0)Q5[6IۙɻYsޞ`Ǥ=&oϛ itn|m-WSБ)0usߞsdt7h`7GpKC oP$x8iyυ+v?7ax~9a%J~p)$}c'ʴ4m3ݼtSN4(V{zyn\XT.q|-cy笠J[VaIJ%&Jtݝз%+0&8U)w.1?Ę*?Dʡ+`: +oA縏561{xt#Qg[j*sHj)"B£9Ud@"Xaut ^,IbRKFޙY#Rj~麠`dsxjFhK|BިgX)`8y4o0Q5i4:`3|s6">t + |`|E'L`Bf ȰFУ'j:JxNd%ϥy:ѳ%EnL”{y<BV&zESYy\* nk(+{d}?&+m XQ s7Z9-u'g`%_M ]e- A>ŚSq'g:>\[K#T":6̯6=' +tFYԔS):caN: V,[ ctūe!8=<*/XBfe±1TNb&ѭ+@-AEE V! )ZVmtN'j[m1c +:Nﶫ&;bp{9$+&_aȜ")xbR2)v!Nm +6xC/z>̳>vI_#sbi}ŰD:0d@i-qRP6D H؎n3,*  ˝BX`⁃#x|Bh!+8+.a-,!Pm|*fhf)p<}) -IIݚv%=g cL~Sq`q z9AڱS-Fz +ĝ7B"WfO.ۻC?vQzv9z>CX>Eѣك+y#\ o~G1%% +:ȏ  +}T6 r*)Tn*rlOO$t_VXPdJ֘o6C0!x/bP cgU,0g9MW,,fCwZ\(*!iJBzhIXYA+F'spt-BN>@dUitd6fE=DX0 +aäGii; )$^WBJhE`crjM\^lSdc}|њ@fqJ]ąk %fP2$TRa9u2H҇$?X$nFf:f~q}_̉X4$c s=HĴr֍&=ٕRfQiӛ'L``Bby8\)#{an +]Jb}!9 5H +Zto!RH[v#x @ѝ +U> 6I !hm +m -xʌ +Zд:+ӡ\#q=ǽ"0G{`xBd0:sS4 +țl`M̉)*H֚MAJH˵_xNڶ|w"Γ2/[Ζ[N(1]s# IR-ݿ5pnx0ѼBƃ7.Qam) ~Fu+d \qR'Flx3ahkv׼L+96eGJ"f(ti,)0 c4gu^i/IaA-Hs+bR1@)|d +-BGuj|#\(@q]h+RnHj˓@G\?T,@p5 ^%5GP[*#ûXxt۷$'I(u0Y-wg9tՅڋ\Oʞ kMѥQ_o~Cp2SUjsXTsc1b}8l5wY~D,!ߺ6Ͳ.~?inuٱk?==n7/lwfQlv~w$b茗Tn~eԮe9;Z/h¾ݍWk] ˲ۺn~-pf"%qfxW[Sn+UvZ5ua c9;T5;oo7kY9Y?n?gռiSM)&/@CQJOAGQC@ИBVcc@MRi{ !G&"d hcoF"qjۭ8_pa_ HF4K$9c8@SbSU3;'AnsgvR- z|" TR<Pzį2=TN+ `)54D(S Ii*6PP7@\TBD@G[LMԁeXT +>C*%mtdMaj1h7U}(X[1%Xh\ ,Y7<<.dv| ~@c>Oa"rlWɕ΅GpL͘ty),'@=أ[l "9FqJ84{p@>8vۣZdFzpy<^S 5#< +2 qُ4V}e$4h==^ rAq9lBPz\ .mQ)vQҞhرz',Q b9* 8$[8i1 [boJʴtwւ'l3.Z4BQ 4X5=qm` f@y"&Cx ׆tT_e#G>;ZO['Ԛ-%'0%1b ?iӅfe0Ƽs R +*n\h`/vHw-8M&>߄ s:('@xtlio19 wN`ɑ,.#p$f +wr&B.J׾aEw"Dkl0"K& =!o d*@#Zԁ0P}7bqknxK9'hبqۯq3b81J +%Qo"YHd(]ltX "8$H: +o \,3H(QrHoV{th ?ӳ_;Еc=)~Li˜SbXܛ)։RkGm)n6O zo!Ӧ 8Qm̅6"4;Ri^+P !E$H`Z2t[t[s }t[hsf!P~5@D0sё&ȷayUqQCN(<ʹ$@=@uOe6!TL@!Wƣ@"t˸*]2NJ|Ա'{*NteLnڰ0C6ꇀAGEGHu)Uhdv(^8ӬҙycΚN1 m2Z.-Ϟ/T,ͭ"QX)gT!6\E[)An 1lO +Qp,9š(Nj# P0+T yrkg8&/d$B8뗓Noȼ!櫐Vɲ)*vJqIy&Ek1jpU36ǐZyPLԸ9bɓX.lQ"182x`B^Ӽ.RN{>+?xÛ7˳WXۯ~/?]>_~W+o/?^pΝf?^_~E7& q +􀕔NP|{y~կXrc}w}uqW|l;?Xbu͏wz_kۻO2(u}w<"Z?O2ˇ&"Ȍ EBʬAHhhN@sa _]'+eQ4v) +,9cIbRz̜Gh|sդ*xO}VfjаGYf}Y(os*~Cy6-*&lש-*.CIMv'W8!y6לE+-L"yh<&zd{KW[.v$&N:Dw1]$dv3Fpϗۏ˳ׯ_]\|y{qh$ttx iH|HSm-SBAC7L!Bځ r0ji٢Ow?HT*rҦ +S#&R;JL[ǹy҃ۚ +bxiFh72RQ a+ 1͑ +$\7-'*mpQe5(ArnZZT&)aAw@(ԳRH $;g׼gG̭,Nۙ8fmil\_cK>E0Y` z%]I cG75;&a4;{Pw6uu\߬K8%Y> + `l}vw{Əew|ǭY?V݁cyʴ]1:SI轶=[FKvURg> 1yGbrgWN('m?~SVy9Ͼ< +C:[h}HGG+Z{"דK)d,:~2~~L8Mxt93"6pĨhS_=l8__3xŭ]ͯ\ޢfAj9W;"5ɐ˥.q/;YEԯ('}ϯ[Kqjb8"ۺPKp];o1I9?Wn{G; cV\9:k|:yCg1C%ApnP 2XAn%N,L%?)Kp@AI^]Nmgwd==ѶrSǾ~e1>vqi\_ʈ+Uk V8}֧2  )|"v e\J\tݻZ}V9lƵ#0"DFGŶ]h\E-m;=Wz!z҉JII2-f rZ?uG)"O:L Jrkqd.L;qjɠp<_M%֓=?";E<&)ЩƒLƮ9}ۧ+AJr>V b[x]?x0!~d2)Z 7( hk84]WKFzf&wH-_b}[i6}tn=u:BtݎCz|?/?'\ k>u[4[Ys%vNZ ,TK\b'*}b ,l<$/e7ͷX_ʦؙ-Y(t\¶$)u\gz"[ eK{0lmdň<>LC2졨<Mذҟv;/?+XWBk=(Z7XN QVbtd~F bDQ +ȻS:oe ,><\D/EHE϶HԆh=z?T5݁xm忲d0 n.JfLg4&'Eܻ;YzPl?nN(B(HXپKoȶxWqda+{ccgld@T|?sd:}R@h9?$NOy+mi S޴`H=ԗ9?3Cs͟ ]ʗp"8&Un ^䑊D="2> endstream endobj 22 0 obj <>stream +HWmOҶ;Om-HWW4:U.̿y)Bn:>9s #+Ӱпa􀰅DF00?c rt~F)ϡ'\顧O-B0R'd-JO7#{oVka,Ot*($qN-9y( < Ꮡѿ18қ>soR!jc kg!Za%ѭ(DTI0a?R!H慌dqғ0ks| +'9x)GOLPX*9ɋsFM^I| NE6z %Ak`5Tk5L:̫I=y߽yikSW:j2X,AեbniUy:˾ϧuNV_ !/Û+3tLu)z ,8еE`x&C?ACyOEd fú.(ur\l@k.&@O4l\j-XNeEQ2;VQ&mx(tv>K ]!Zq,駱Ӽ֧Q8H*D>d7I䧰uA^ٺrjn,q$+Ixc-Ks1ӓRVR@0ϐL$k B2Yx3f|Sr +䵇k泥A,GPYZof> \[?MmY\H0Jٲ]JRʖ~x[V"/cmm L-Gc @-,0 )'!&PD{x(tvK ]!˭Zր,駱ӜQ80D>d7IKv 9a$/Vۿտ6n%ue,a%CPl.ȤJa?R!H慌d3h: 64T-*߿-CUfi 1` %X$-.6׽,0se )˖RjX|߲)}kk3ءV8Vra NouO7BlPܚm 8ɒN9i`S=Ё LxJ}h~0ZjukBEb &IMIBpc@5*'$a?R!H慌d3: 6gZkOGX*5Z5|05unxR\\"Q-ۥ>*l%yJev͘s± WmbWWPL-b̅%8!c =p<^ +]zjRCmWHskV5$;f4iN@R2* ux=:fv>*֭ m[Osc6n$$+$dŘU D>6_3$ZüvE'aC3S`fB%M^{V~>r U5a.N:]][K}T/Eˊev }ba NoqO6Bl'Pؚm 0ɒN9 }S=Ё@S&xP%ӼaMZ>qg[XGEպmQi_pֿ4Cu)G0ol}wi.NzR*@@ +Hc/da^Af;0ks/k[T@&=\+Ͽ? b9Z~c0k0Bs± $u1#6ٲ]JȖ~xZV/cMmj|\pj-m'dw7'Nj@KOMZj + m׊ɶƘd|'Lߜ?©@RQ&xP%3a NZ?[Y1sQnBh[՚+=j&IMI$l]n][%0ϐL$k B2YxP-*`m` R-M)aGPL>#X*sS0ܟ̃@٪x7A\$]XkV#, 20N^;zIᦃ=y߽yikSyدK/= +"OgTn)܊ $exswN.v;Eoᕅx ݘd#y(o{ZVa 3Gw*v1!2tK`<u>s&+Mm@W'+1M"PSjBv[󵢵&YfI57yOp:KxP%a\NZ.?gE6h.{%ʩfX܃nN*oRBɌ( l2SbLp)K,d@۴?ȀM$=*e`QV uvGEcˠQ]m2t.=_l2Te.վ +9%XL7& z0 1u@qB'rUs^^F k-oC qU?ն;(MI{Hd!8SM(inYKAVaI~ iɱvfg+%xEr _mkKWv`8RƧ]'-"l[TIAm-7vF7^$ǝ$ߞD|,.q~S~Fy] /OK`á3ה׿?eWRfqxۓ%.6rqxQ'^Ǭ=uL'˓JW) 'ʢIf#Zx0f=NU R^KѪZ):~E|AEAXo*O-=Q7<J=7rd]cA6 +pa4|o2ߛgo2˚!>}˹K 56= /w~&#M-'kf-A& eA-9!qL01}D|{M2 E-jfVeԫ0-C3jv HRYsVWZA~(tLM5.ubgyؗ](!| N➃sҢAlW/<C\Rˀx踉!&vR+5Nx`xѵ3z~38l!(WJB`O@'{UUy*Q_…94qLI0OȪqGw^6y`QlPI,2לztd,O3ϯt545" +1,`bGpPk.13$'G(;@A0 J1aY5ޢv88ؼI!9W .Xr;W<"IYMY澍yeZ뺥XZ2Zy$&-sy98KX |rU)ݎ]T|aPuΒSw(2NsM?q&}y@|u _ +S{D\Ax +aD\ݒٸ< _"[cV)XY 0t9eݐ0Ix6YO=*'tZ'?2 +\vD~p&JG OtjWF=jCN5=~:`o"}27 uC~O>Z snVh}0uhHժV@Un>ۦU˦fYLJ}j\Zf@9Lb;c4)}8Z*@z-o~~?vbL#yj4XmMS Mro! Kxj,NB_ o!V\$7AA|3>- `G+ؠz2Z͚UJK{N{Q\Ҁg$U+4PĜFO[$]twMDTS>_Q,ˆtT|e̲Wtbj^F\IGճB)@Z6 +.t] }8^~ХZm~Wئ^uC-uRfkZ+}u_4U)dUpa]-תz_ #F"\~YXSSӀ & -5yv ]8ٸ ݕR I^M|nL%GU U]yH|ę3ՊY3e[3툺a2#a,<󑝖z8N<ê[ڒ2ZUEXZPsPkQ59?4D8.Y3@?"Ҳ9;ObSF>P8h Ml¼,BV!rCjKgbF]AqTlRT6plՔ̔*8C^#;G%HuWV]ǡ+/AIT;>)#&)/pQ.Z 9N:I6J#T顀c6*MM-dg~aԐ],#b;q9Z}CC4kKoNC±uCᬷ) .Gmd'T,>_G$swNp0Zqc=yJWƺA@l\+|e-izY-> ]7:èujb?f3Dbb.]a%$[ê\"nwc48s7a:@tJK~{LDZ&,[tLf cq0xAdv2fV3K>G]yil2]A)s`)QE9*== X{uO_udyrbmjXUֻpKqo~kegcs%L/ysx[gdgU.?1)sr9\ȣqըL$2wYJ i3q+- *h3ܿǹ*cܚab#.EfHK\)]:6ƿdqbY˱)rHx)ތWtp:ygv 5 Zx:䁔 .8@xi#,*9T4x ` F)U˦V'2GA8ϫaJ}rw=]..6o#Ĥ0Ww+@H*Y mׄBztKA,/ݧ7sQW6b'u:{%znd ʘ*ֽSq {͢Or7 "3ktvsAX-ujA]!مcH&ϫv"SCLBa\:GP>I,TX4eGJD)?ybmQ`Q/]oInN}]8ݚ}3"RsX9rĄ%e[62`JqL7 MNXIUM6J),PVT=܋. x)-YaℑTnJYMr6jq۫RAH&rEO6'~+RD 7b,raz|ܺ<L1XV_u7v ,uuKrʁL9+wfd,,e/8qb~E[o hApac`HH()"bjkqXt iT4e(X:a )9RǰvSd>JMtMS & âX6|m|*폨;D~t2ieh\Zu}f$v3}qraePU D)4e c=  0' \s{>V2iCBv >|F9@#OV+'ϏǏFѲ`vfnI[sI)YwD }K72lNJo6\gzz-q~][)N#\F-arC$+)P_9ض?T5eA%wXV߈z{2;BBμS {.;h1%?ש/7{-YbpV'd-X߱S8qYS[liZ(֣R##p:g+PWƦ}n"v2|y#E͕!BsCl Q9g\R*mY8qh?Ī7*P_׷'tʵBeU@JYې%_^PI Qp؛( ʠ-_q l13_>^X]3;G|SGR&4*<+"w}Տ\%.Blzt} +~NV&"c X̎Kz$=]iX2& Wkl , RENhRnWPS8eשIdה\!mK_0oX'r~~䰁x2Q̔@>&1V%'R1%C0 vh{2\L]jzy5֫fTy_O(ngK;- s("Y>U>RWd +t@+!s.O{;<ꦦ]6*f;Zt5,bՓƣz#flUY?gxa4U.bt;|mzWҩWn#.7V|k[2ikT/jo+r,5O]Z"e)2_蔌":qau϶ :q`[n >pB<3 am߰0XF}:\&8l 4EOBR& +;~ +-ut+!*b^4mz,=%Z,AwspIslPq u" ?'+t + qϿ*1DS\UBWgSM|X@>LL* Ų\4l}2-Tp[6M4 `b.%-=䒝?nH7%mMىD37/5fBRljc_lQkvPbĝ8%!8޺/.(?M$:j]ڑWAn}wp--O*.MXeQv`XK3-Ou3]՘}d]@zxx`{.(@` ՛"a)."L:q?#Ghma]pa8"A| ‡RMw5snռ`MXu@ r [x9 +]:](k,zKLg-RпCϥsJoԯ]֣ +8߂jqzQ0)y<(Ngd]q8<%??3<$>j- U>/CRx]6018>KπEq7yq뉧Ȯ0/fmjzC8ȐUNpOdwoǪ63O. +F"jYQ]*}i=b1|TabR>($ۿL/21|psH;(TwkxoAN\qQy"i"{r.9E0 uA\;֝g4`ajɘOwvXk0!$G)΅9EZʏ]D ö07jm [p_VTݹΠ~tqlH}S'Y]@}#9ɽ!q[`gߞ\7' TGދv8OS;tlwjr, 8m +xtfZ*R\'_D?$ H.%T$@wA&ٳc2rCF:2g7?D&a!Kٹ^zKŲ;6扅. EUg/ gaP>4F> ּ$I_""7)@ <hKaJ/&oJZ' qj3'"l6=Iθ/Ttw-LoLy"N}ndnWyv *H SC4J5pJ9iF(`E,B EgM@JwȉL)x}]ord1^aƂ)I)f2eQAhm͛r$ [GzhH&9pF0b/kXy-!\9?7T2xt=~6/U39 U^MB(0`rg!,-(i˾?E.pӥ\K,9^/6xĞS7J^\!fns; [jk? 3-+*iMAk"Z+AS's"͛q '6S*m6m^>IllBmZ1<[ y E(ЊU5b?',{M}ȫiOzti7=u`ۜR&I$'pbib:4FⱄrЊ?9mXRb>?Y;tՠ>/;AUgrp,&6|%MpO3toA‹)'ꪂZu.&Kx2ϋ!TY!7Hzs~`+W7^:>٥hZsjǺ!>C]~Uvy.vI=&Ct޳YX5k {CᆱVU&TŭS}FTGqp+TzA + 6Pjg5[SVQqی=A@U BD;x\@0ʋ[(ەtwWг/" "y11~x}Afa,YTZHDUXr.z}޾ P5iO0Q8ފ$2{Hkq#iR].:DC5ҥߟ|㎬($//cgķaEmBft(Kn㘅ĩT.9X +!Um2lMY0M 48%mx=Rd*-N`@je4KL09?p Y\<&Ci<x03pqiGf׋kCTT`;牖a]y>stream +H~:ǯ{q߫Z}EŊ"Ps{o(}/$C$pSP1OQU[UV ox9$ʒ g6G/Kv# +@**?+O▽(<^,.pb$ף CsbB Q֜zb4TqITp*ܗ($!Ufـex ^VM,Ut-FΟ7' Pĝ/6UU<]ĉ/b *Jٝk5!ƻY5(ٲ;̫eEr+/AQy].I[4tMnKޘο +c~ OϠWB)}{Bi jb3Jn +X!˅״RH5r8}Tل'/7_))蔨}k'P^ +Ei'ؓrVHIcKFdJ~P "Fn9_.-qm^c(wy0zL?Bg3[CE<\, gm#LX^54{d%Bз,f2>j# th|a54sԗu"f#߶ʕ__Є)<:^]wh@A.w:sEZˑ%ޠFRhAZ\WٹІXz)hL|ZJmCn4?-%j v)}aɚ3b ]Wa#QOvfk+=;+·Զ|`@<.%_qҳc&P{+F5 B2d=ɒ$F :E:zL.vcyٱv2P j#{&HlR2t G-PPi +ט)w waEB_akU6tXB?:Wk j#sɏW)g mGK.o Zv+(UD=J[C;rџ-ޱA98!9W5{Nt*j]621r%4 y1|7y\uk4IiP]43m+_ +( M?/P7eϘ-#F(zJ͠+VԧVذ'.b5hj)ֽ|iLUBu2 4AeĊMP%~_b2.M??2Tݵ3H9}{"ΆKk\6i&RH*ӮL{+)5335E+u,ܷ=KkAZ~H.kXMK8zͺjwbݹӦ~z8E왧[C~r(#:3:V¾"I'zPߤz}TӱVXF8ڢb?a=lFpWsCZΚEZ[TAWSNoa7jw9ɚQ_)J(gޕѪ+ o`rV"xhhmt/: [1aFjxTSnoAd;ο~9籂#['moݎwRcAkoa.dU(ne0MM8=gj 'H("}M +ƆNqMu;rPFM內[uk{CPp<:GBA +OHu9<FB3{ YeWKoe=nq> {L8?_unQ9Jz|ں+ Vgp[β\\ӎsLx$|ғ`QmDA椛G梐n8Zt}JT!9j&_#uvngKH./]DWԭ{&n۸@LCJ>Uu~-7gߵ:sގ2xs=>$[qpA~>ޒ:CZ`vH6zn%4'`igF20nnW>_UVUTVWhVfdfD$3FF@nS?v dOӽ +ӿbn}{*u K 2e$XiCi*O.dys(5Yep䅸#ssmOrhu+]b'M=Mz h~ۼ=])3&,cw'Zһq.6$P84ZHq^} $pU*FU5;'oh2\*H0hv97uאt%7jm~dj"EЙji(XI5(dTNuH+FX);(e:`,3=Q;btC5?6l])QyZmafGG*8[ +[.l%lTtP<ܬAY mcL:ݓh,O /<ᕤ>ZyvibPJsZj3|ץ"@o^(kCzW mR0VPe1l,?bIЈMVh"Q÷>2wt^OGt BV(Fm4e[>~VF˸-Dt9.~zh.茣 <:G+˲#x +1p 6KĞT|X@)[S`2DEs^]RYaCcܙy/7S</!'x!} r*$؎%^.eU8@aT\S +9y{P/ř3.5̶ ԕ>ɤ2yYu>I-rW<{ȕ + X(+vvJq7J(xjaqvO@fT pT*F[uelϠz"MOiՋ]JSnXYj?@s4HA/nTW9Oh6U[|.EǪh:{CxTXNC|Ud7u3ӌ>VA|d3QV:v#|Nx-MuwۗEZ^&bt%R;) x%t{_@a |{ -aftM.yr J'N פ qvJPuDaGlux+e,X|cU_k* f,MDq2S%b<-F3_3;^0'˰6͹^8x>?iImܭlhk"F (NpF h8hVe494].xcy;?p&+(Kk+U7oӦ:os)@_KYZ4 #HVAEѰ43>OR$o0qԬ=ׂW\EQVSM]#䮻ky-De`6SC:^/i@^eKU15WS1'Z8/^@U5k!aeh5dpⴐ~V ꫩhm,C>~^`ҪO2W?#6d,vSy v}_eSN'+EzWs 5!XʥNxas[TJa2j NP_%zWyC Jz4)+M/`?t$E[01@''y$eG>nτRR\"[ї{\ o$~1dHG>VDu8m+m\OwRhs˯YWIoݷ|я_ũG~ծG}Y36y6|cMGt/ѯq<:t`s~}&gos#haIѕ98FNriwUOv#7ojo/3߈_fjAckqRot/f+# mwaoS8t/iؖ_dK+B_PMûKTSe+r8,ߺ`QZT F̽'C($%)!4E{`>X묋Iz cwzOuOg/'%~3_Oq9]CX/divR͎8\&Qp-۠MkYk嶗&L't8[RZaȕAv)\ZxlJ }--b|@7VU9'z-N`%ڽeɷԀS B%fR:Mΐ&ټP +APLݣjޑ@G/J},GU?6ל''O%gg2FtXp:g GFzzHwc&$mv] +rMQNSvq(B}=ؠW|4I[#"Ta |1 IU`Jr+bvRԉ:ln&+t\0P>wc(O֪W{iP' ?ꈕdc6T턘%Π8G;*MƏfQ _Z!0_p!QV!~xh)I_pR*.IpWMɺdI7;dby҉8!޺3ť5o_[bIo33 ~:A_Ha G!1皮p6|iwϥh}Ds=zR҈3-V Yҵĕ-< f` 0DElph^2@M!?;ygF +2%l@)mEZc=f+=$9Ul[,䅉x[  |!X$*O"b( C(JE + P/J/#ޠ J IR#fj %P|žO P=>t+{RU. YT]M:åz1nIු,IWoɅwY~;ٻ^&3A/8$i/gk&),xS`ۜ1X-К /`/ѓB4!ޖфhPp!9!mr.2"7q06i|pU4_f4 G*#L2|LvqK |$^ r%Z%yZ}K:h+kIئ[b,MƊ_NAi@La2݉v2Ae'rOSG7 t]sQ;/!^IoFP  0t?\AT!0FPaqa؟PaEO'$>Lj|+DR1R>Lbo^ijtCgt_F g0s+kW>469[06.loM4+R  ˥<+0C}-&S8\]{a +-%T58rE*i. If0Š1+F\n@kzD.& ILd4K4%9QjzBJyŊ.t%e ^+ +.@E1!3AQC1ld3İ&£E_`{{ xwUV)I>Jdц1s/K#CV18:88LW3]V.^/Η1>KC^=^(M(y@皃4˟Ӄ[c^Id6ͻj8έ`7j?'Ƀ8Qhs0v;sQ W5RοHwɵ}ǡJ:{ok𨰱u]5XfdRG7Wml^p?) qZNQ4߼_SNXn"ѫگ+(nQ'J̇s +scgh0S .Ov(H['CƋHcvVzNP1F佚L5nj,Цl,R!TjJ&#i> \6j}CǟMӻbXq׉Ǚ=} u4uYe4P,rIUP ׌"]GQ$5Dd49E+&7͑IbqAdu>Zȍ-U[ត{T9e\(>SRx}OSX1ez:2L?o[\Xx'ð~ cb:ilgWL*X㲚b6sP3pt/!>P1 ++ɝ~Fc"3Odzo/&IXlxy)"Di-Aalk m8cwZ?l]{zTRAWi{rU3,;4 5ذXUR쳋8(ǻ/Q  Hȟ,2XfP` @T3(QIgu'U=s ؉◦vp yم/5y.J} USIvNVRb8d1堨TWEA=ͷr ++"V: +Sau*<-_+^1R%q=8|dc|[іJ"%:'+VܨH7ފOVn[}!#I"f0'+ EW|^Aܖc-ʘ-ym9,!a1A0: +ա tCnPINf-ry /8M鮞#EmhѤ=lM(`.J(:Cד&+K(ZR͐[pg-形= +i@;75pz0Pv(쾢lhJFe޶D[#*;$۔c$լ&i#m?pQL8ߊVe᷋[;V)}D$' Af&˄g46& v+1IlXpKuc$ rG}E;yW4PWHiR4.[r^s\]{o S۪ Y.H1`xς!PT xxZ=xqP0t?@H0mlЯz!A;a!ɾm}d㚲uc̦RQ#GKPVFSx4ihODGDs19 XquGMep;ͲzagiwIVy5-&ќLx:rg=uRuXLO HP>Ƕ.t]7 pG0h V4I#X0@hm^OC+F^n ŮMY)+ZAk당+|SxʊJ!+Mmu%Rו5X*]K\ OCXfe_Q\eʌ@";{ӝETթSN֟0]eOP$)& = ê/20 +u#/"ķ;J(z M$o7&PMA/B}/4UNv{$S5RI}iVq%2ajRL]2` =7F!9wyX%蝓OL(VIV+C]uVXj.|1ynR.֜-X8p|uyhu: Y8̭NaӁ?ET>MVJ/>x)Qd9OS0/$ls+5h4dž·3)%إJMqDuʷi@t +r<Ȧ,N_atap9ͮ#B/)A_ڝ Tjt(Ns,͑SM98mrt[P+q7d3!uwLwZȩKR>D {)ߥ;4ypbklrtAi(n:]՟KQDWF uL痮m j_uvVwbgӳ0=Zj6 RS055OJ kUUJ-%@ D~hzbjQeշ*s8\1`0XjƒT1S G2!E&l*dѐ^EݩϽ1L#V5xJsRhd[9~gFF'J7(7'EiXNZC\1B&Tҿ$E Nk6n. "Xצ} M> bR|\ո-$ !f ,E ܄61,nO%4z_m{$cC\s7m{K߄[Ax60F;^bf1-Ij*]_tUL fbvS;u juF?~ZЏnā  t8X@] wr+M- SEI^W i@>K瓒3oLqXB2HaMEB&jZrGnyj%b>$ R+S=fK.]:IJ25o}%>^-Omp "ķP R"09VbK,wt(ӛmr$;uU򸒓XioS+2 zZt+-N]RAc_Ar{7b2 $)T0GƘ@Ƴ7:b2f;aKM4M\@{rA(ʎR)𠱔o}%|d}*^zZ(X^NQ7_݁w;٪*I.zuB`t?ð.P+jK92Wz</B"PE Vu ).=I2ɄyTny x|c;s8$䫃lהGi}hʈik's4שA8l {IhܩҸod*ۯO4inUxtm3>j f3(l:#nG|מLL}ZO(Ӿ^ yk&k ","+3{~/Xai)lO0K\a*D@R.nyn ݲ +oY[onw,FzmMDo/"oJcV+R[?J25uh45#?X8|a>fI4['ᖓepIl8?)/؝& 9B(Mf`Xdw5f0Ϻs>-¼u*s)"Zĥmq=-6\buAyWbX1t=.ߖCOK_9-xB0rpwi#4])ƙD\uI%ʏ0(֯_}@k/f/1>iQrr9ʯ*-@VM%9pѨNY Z[?BtD풐-1&4>b"DK`Z8bxD5KGFӜaKo;>!+=v6Ga ړۗ @EME#V91hBoɠ5{W`Uh<`nj2GUi\8tIdchd Ơu1iѠ^,3a@Vsv5{޻7s6~;9r8t~/>!wD +db$>[5?w+Oy[bd<Π l+֬Uۛ?Tĥ> endobj xref 0 25 0000000000 65535 f +0000000016 00000 n +0000000076 00000 n +0000036670 00000 n +0000000000 00000 f +0000036721 00000 n +0000037161 00000 n +0000043552 00000 n +0000043440 00000 n +0000042635 00000 n +0000042879 00000 n +0000042927 00000 n +0000043625 00000 n +0000043984 00000 n +0000045074 00000 n +0000050595 00000 n +0000062392 00000 n +0000075904 00000 n +0000094670 00000 n +0000104683 00000 n +0000108192 00000 n +0000125156 00000 n +0000147607 00000 n +0000159314 00000 n +0000172362 00000 n +trailer <]>> startxref 172542 %%EOF \ No newline at end of file diff --git a/vu-cs-standard-thesis/0_frontmatter/glossary.tex b/vu-cs-standard-thesis/0_frontmatter/glossary.tex new file mode 100644 index 0000000..91df2b6 --- /dev/null +++ b/vu-cs-standard-thesis/0_frontmatter/glossary.tex @@ -0,0 +1,21 @@ +% this file is called up by thesis.tex +% content in this file will be fed into the main document + +% Glossary entries are defined with the command \nomenclature{1}{2} +% 1 = Entry name, e.g. abbreviation; 2 = Explanation +% You can place all explanations in this separate file or declare them in the middle of the text. Either way they will be collected in the glossary. + +% required to print nomenclature name to page header +%\markboth{\MakeUppercase{\nomname}}{\MakeUppercase{\nomname}} + + +% ----------------------- contents from here ------------------------ + + +%\nomenclature{LSY}{ehbfuefebbfbjkjkebfjbfbfw} +%\nomenclature{DEPC}{diethyl-pyro-carbonate; used to remove RNA-degrading enzymes (RNAases) from water and laboratory utensils} +%\nomenclature{DMSO}{dimethyl sulfoxide; organic solvent, readily passes through skin, cryoprotectant in cell culture} +%\nomenclature{EDTA}{Ethylene-diamine-tetraacetic acid; a chelating (two-pronged) molecule used to sequester most divalent (or trivalent) metal ions, such as calcium (Ca$^{2+}$) and magnesium (Mg$^{2+}$), copper (Cu$^{2+}$), or iron (Fe$^{2+}$ / Fe$^{3+}$)} + + + diff --git a/vu-cs-standard-thesis/Latex/Classes/CUEDbiblio.bst b/vu-cs-standard-thesis/Latex/Classes/CUEDbiblio.bst new file mode 100644 index 0000000..17569e7 --- /dev/null +++ b/vu-cs-standard-thesis/Latex/Classes/CUEDbiblio.bst @@ -0,0 +1,1141 @@ +% BibTeX standard bibliography style `plain' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +FUNCTION {scapify} +{ duplicate$ empty$ + { pop$ "" } + { "{\sc " swap$ * "}" * } + if$ +} + +FUNCTION {boldify} +{ duplicate$ empty$ + { pop$ "" } + { "{\bf " swap$ * "}" * } + if$ +} + +% -------------------------------------------------------------- +% -------------------------------------------------------------- + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names scapify } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names scapify + editor num.names$ #1 > + { ", editors" * } + { ", editor" * } + if$ + } + if$ +} + +% this changes the case; very bad for abbreviations like DNA, RNA +%FUNCTION {format.title} +%{ title empty$ +% { "" } +% { title "t" change.case$ } +% if$ +%} + +FUNCTION {format.title} +{ title boldify +} + + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "" volume boldify tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pages" pages n.dashify tie.or.space.connect } + { "page" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null boldify + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In {\em " booktitle * "\/}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +% -------------------------------------------------------------- +% -------------------------------------------------------------- + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + new.block + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + new.block + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {dphilthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "DPhil thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + new.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + note "note" output.check + format.date output + fin.entry +} + +% -------------------------------------------------------------- +% -------------------------------------------------------------- + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/vu-cs-standard-thesis/Latex/Classes/CUEDthesisPSnPDF.texshop b/vu-cs-standard-thesis/Latex/Classes/CUEDthesisPSnPDF.texshop new file mode 100644 index 0000000..9d1eb9f --- /dev/null +++ b/vu-cs-standard-thesis/Latex/Classes/CUEDthesisPSnPDF.texshop @@ -0,0 +1 @@ +../../thesis.tex \ No newline at end of file diff --git "a/vu-cs-standard-thesis/Latex/Classes/Icon\342\231\252" "b/vu-cs-standard-thesis/Latex/Classes/Icon\342\231\252" new file mode 100644 index 0000000..e69de29 diff --git a/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-bold.bst b/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-bold.bst new file mode 100644 index 0000000..17569e7 --- /dev/null +++ b/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-bold.bst @@ -0,0 +1,1141 @@ +% BibTeX standard bibliography style `plain' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +FUNCTION {scapify} +{ duplicate$ empty$ + { pop$ "" } + { "{\sc " swap$ * "}" * } + if$ +} + +FUNCTION {boldify} +{ duplicate$ empty$ + { pop$ "" } + { "{\bf " swap$ * "}" * } + if$ +} + +% -------------------------------------------------------------- +% -------------------------------------------------------------- + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names scapify } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names scapify + editor num.names$ #1 > + { ", editors" * } + { ", editor" * } + if$ + } + if$ +} + +% this changes the case; very bad for abbreviations like DNA, RNA +%FUNCTION {format.title} +%{ title empty$ +% { "" } +% { title "t" change.case$ } +% if$ +%} + +FUNCTION {format.title} +{ title boldify +} + + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "" volume boldify tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pages" pages n.dashify tie.or.space.connect } + { "page" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null boldify + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In {\em " booktitle * "\/}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +% -------------------------------------------------------------- +% -------------------------------------------------------------- + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + new.block + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + new.block + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {dphilthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "DPhil thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + new.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + note "note" output.check + format.date output + fin.entry +} + +% -------------------------------------------------------------- +% -------------------------------------------------------------- + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-case.bst b/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-case.bst new file mode 100644 index 0000000..9c6dc7e --- /dev/null +++ b/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-case.bst @@ -0,0 +1,1132 @@ +% BibTeX standard bibliography style `plain' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +FUNCTION {scapify} +{ duplicate$ empty$ + { pop$ "" } + { "{\sc " swap$ * "}" * } + if$ +} + +FUNCTION {boldify} +{ duplicate$ empty$ + { pop$ "" } + { "{\bf " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names scapify } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names scapify + editor num.names$ #1 > + { ", editors" * } + { ", editor" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "" volume boldify tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pages" pages n.dashify tie.or.space.connect } + { "page" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null boldify + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In {\em " booktitle * "\/}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +% -------------------------------------------------------------- +% -------------------------------------------------------------- + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + new.block + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + new.block + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {dphilthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "DPhil thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + new.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + note "note" output.check + format.date output + fin.entry +} + +% -------------------------------------------------------------- +% -------------------------------------------------------------- + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-url.bst b/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-url.bst new file mode 100644 index 0000000..96dbe54 --- /dev/null +++ b/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-url.bst @@ -0,0 +1,1447 @@ +%%% Modification of BibTeX style file CUEDbiblio.bst +%%% ... by urlbst, version 0.6 (marked with "% urlbst") +%%% See +%%% Added webpage entry type, and url and lastchecked fields. +%%% Original headers follow... + +% BibTeX standard bibliography style `plain' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + eprint % urlbst + doi % urlbst + url % urlbst + lastchecked % urlbst + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +STRINGS { urlintro eprinturl eprintprefix doiprefix doiurl openinlinelink closeinlinelink } % urlbst... +INTEGERS { hrefform inlinelinks makeinlinelink addeprints adddoiresolver } +% Following constants may be adjusted by hand, if desired +FUNCTION {init.urlbst.variables} +{ + "Available from: " 'urlintro := % prefix before URL + "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref + "arXiv:" 'eprintprefix := % text prefix printed before eprint ref + "http://dx.doi.org/" 'doiurl := % prefix to make URL from DOI + "doi:" 'doiprefix := % text prefix printed before DOI ref + #0 'addeprints := % 0=no eprints; 1=include eprints + #0 'adddoiresolver := % 0=no DOI resolver; 1=include it + #0 'hrefform := % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs + #0 'inlinelinks := % 0=URLs explicit; 1=URLs attached to titles + % the following are internal state variables, not config constants + #0 'makeinlinelink := % state variable managed by setup.inlinelink + "" 'openinlinelink := % ditto + "" 'closeinlinelink := % ditto +} +INTEGERS { + bracket.state + outside.brackets + open.brackets + within.brackets + close.brackets +} +% ...urlbst to here +FUNCTION {init.state.consts} +{ #0 'outside.brackets := % urlbst + #1 'open.brackets := + #2 'within.brackets := + #3 'close.brackets := + + #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +% urlbst +FUNCTION {output.nonnull.original} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +% urlbst... +% The following three functions are for handling inlinelink. They wrap +% a block of text which is potentially output with write$ by multiple +% other functions, so we don't know the content a priori. +% They communicate between each other using the variables makeinlinelink +% (which is true if a link should be made), and closeinlinelink (which holds +% the string which should close any current link. They can be called +% at any time, but start.inlinelink will be a no-op unless something has +% previously set makeinlinelink true, and the two ...end.inlinelink functions +% will only do their stuff if start.inlinelink has previously set +% closeinlinelink to be non-empty. +FUNCTION {setup.inlinelink} +{ makeinlinelink + { hrefform #1 = % hypertex + { "\special {html: }{" * 'openinlinelink := + "\special {html:}" 'closeinlinelink := + } + { hrefform #2 = % hyperref + { "\href{" url * "}{" * 'openinlinelink := + "}" 'closeinlinelink := + } + 'skip$ + if$ % hrefform #2 = + } + if$ % hrefform #1 = + #0 'makeinlinelink := + } + 'skip$ + if$ % makeinlinelink +} +FUNCTION {add.inlinelink} +{ openinlinelink empty$ + 'skip$ + { openinlinelink swap$ * closeinlinelink * + "" 'openinlinelink := + } + if$ +} +FUNCTION {output.nonnull} +{ % Save the thing we've been asked to output + 's := + % If the bracket-state is close.brackets, then add a close-bracket to + % what is currently at the top of the stack, and set bracket.state + % to outside.brackets + bracket.state close.brackets = + { "]" * + outside.brackets 'bracket.state := + } + 'skip$ + if$ + bracket.state outside.brackets = + { % We're outside all brackets -- this is the normal situation. + % Write out what's currently at the top of the stack, using the + % original output.nonnull function. + s + add.inlinelink + output.nonnull.original % invoke the original output.nonnull + } + { % Still in brackets. Add open-bracket or (continuation) comma, add the + % new text (in s) to the top of the stack, and move to the close-brackets + % state, ready for next time (unless inbrackets resets it). If we come + % into this branch, then output.state is carefully undisturbed. + bracket.state open.brackets = + { " [" * } + { ", " * } % bracket.state will be within.brackets + if$ + s * + close.brackets 'bracket.state := + } + if$ +} + +% Call this function just before adding something which should be presented in +% brackets. bracket.state is handled specially within output.nonnull. +FUNCTION {inbrackets} +{ bracket.state close.brackets = + { within.brackets 'bracket.state := } % reset the state: not open nor closed + { open.brackets 'bracket.state := } + if$ +} + +FUNCTION {format.lastchecked} +{ lastchecked empty$ + { "" } + { inbrackets "cited " lastchecked * } + if$ +} +% ...urlbst to here + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem.original} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry.original} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +FUNCTION {scapify} +{ duplicate$ empty$ + { pop$ "" } + { "{\sc " swap$ * "}" * } + if$ +} + +FUNCTION {boldify} +{ duplicate$ empty$ + { pop$ "" } + { "{\bf " swap$ * "}" * } + if$ +} + +% -------------------------------------------------------------- +% -------------------------------------------------------------- + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names scapify } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names scapify + editor num.names$ #1 > + { ", editors" * } + { ", editor" * } + if$ + } + if$ +} + +% this changes the case; very bad for abbreviations like DNA, RNA +%FUNCTION {format.title} +%{ title empty$ +% { "" } +% { title "t" change.case$ } +% if$ +%} + +FUNCTION {format.title} +{ title boldify +} + + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "" volume boldify tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pages" pages n.dashify tie.or.space.connect } + { "page" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null boldify + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In {\em " booktitle * "\/}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +% -------------------------------------------------------------- +% -------------------------------------------------------------- + +% urlbst... +% Functions for making hypertext links. +% In all cases, the stack has (link-text href-url) +% +% make 'null' specials +FUNCTION {make.href.null} +{ + pop$ +} +% make hypertex specials +FUNCTION {make.href.hypertex} +{ + "\special {html: }" * swap$ * + "\special {html:}" * +} +% make hyperref specials +FUNCTION {make.href.hyperref} +{ + "\href {" swap$ * "} {\path{" * swap$ * "}}" * +} +FUNCTION {make.href} +{ hrefform #2 = + 'make.href.hyperref % hrefform = 2 + { hrefform #1 = + 'make.href.hypertex % hrefform = 1 + 'make.href.null % hrefform = 0 (or anything else) + if$ + } + if$ +} + +% If inlinelinks is true, then format.url should be a no-op, since it's +% (a) redundant, and (b) could end up as a link-within-a-link. +FUNCTION {format.url} +{ inlinelinks #1 = url empty$ or + { "" } + { hrefform #1 = + { % special case -- add HyperTeX specials + urlintro "\url{" url * "}" * url make.href.hypertex * } + { urlintro "\url{" * url * "}" * } + if$ + } + if$ +} + +FUNCTION {format.eprint} +{ eprint empty$ + { "" } + { eprintprefix eprint * eprinturl eprint * make.href } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ + { "" } + { doiprefix doi * doiurl doi * make.href } + if$ +} + +% Output a URL. We can't use the more normal idiom (something like +% `format.url output'), because the `inbrackets' within +% format.lastchecked applies to everything between calls to `output', +% so that `format.url format.lastchecked * output' ends up with both +% the URL and the lastchecked in brackets. +FUNCTION {output.url} +{ url empty$ + 'skip$ + { new.block + format.url output + format.lastchecked output + } + if$ +} + +FUNCTION {output.web.refs} +{ + new.block + output.url + addeprints eprint empty$ not and + { format.eprint output.nonnull } + 'skip$ + if$ + adddoiresolver doi empty$ not and + { format.doi output.nonnull } + 'skip$ + if$ +} + +% Wrapper for output.bibitem.original. +% If the URL field is not empty, set makeinlinelink to be true, +% so that an inline link will be started at the next opportunity +FUNCTION {output.bibitem} +{ outside.brackets 'bracket.state := + output.bibitem.original + inlinelinks url empty$ not and + { #1 'makeinlinelink := } + { #0 'makeinlinelink := } + if$ +} + +% Wrapper for fin.entry.original +FUNCTION {fin.entry} +{ output.web.refs % urlbst + makeinlinelink % ooops, it appears we didn't have a title for inlinelink + { setup.inlinelink % add some artificial link text here, as a fallback + "[link]" output.nonnull } + 'skip$ + if$ + bracket.state close.brackets = % urlbst + { "]" * } + 'skip$ + if$ + fin.entry.original +} + +% Webpage entry type. +% Title and url fields required; +% author, note, year, month, and lastchecked fields optional +% See references +% ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm +% http://www.classroom.net/classroom/CitingNetResources.html +% http://neal.ctstateu.edu/history/cite.html +% http://www.cas.usf.edu/english/walker/mla.html +% for citation formats for web pages. +FUNCTION {webpage} +{ output.bibitem + author empty$ + { editor empty$ + 'skip$ % author and editor both optional + { format.editors output.nonnull } + if$ + } + { editor empty$ + { format.authors output.nonnull } + { "can't use both author and editor fields in " cite$ * warning$ } + if$ + } + if$ + new.block + title empty$ 'skip$ 'setup.inlinelink if$ + format.title "title" output.check + inbrackets "online" output + new.block + year empty$ + 'skip$ + { format.date "year" output.check } + if$ + % We don't need to output the URL details ('lastchecked' and 'url'), + % because fin.entry does that for us, using output.web.refs. The only + % reason we would want to put them here is if we were to decide that + % they should go in front of the rather miscellaneous information in 'note'. + new.block + note output + fin.entry +} +% ...urlbst to here + + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkb + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {dphilthesis} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + new.block + "DPhil thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + new.block + note "note" output.check + format.date output + fin.entry +} + +% -------------------------------------------------------------- +% -------------------------------------------------------------- + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.urlbst.variables} +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-url2.bst b/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-url2.bst new file mode 100644 index 0000000..90e11a5 --- /dev/null +++ b/vu-cs-standard-thesis/Latex/Classes/PhDbiblio-url2.bst @@ -0,0 +1,1448 @@ +%%% Modification of BibTeX style file CUEDbiblio.bst +%%% ... by urlbst, version 0.6 (marked with "% urlbst") +%%% See +%%% Added webpage entry type, and url and lastchecked fields. +%%% Added hyperref support. +%%% Original headers follow... + +% BibTeX standard bibliography style `plain' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + eprint % urlbst + doi % urlbst + url % urlbst + lastchecked % urlbst + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +STRINGS { urlintro eprinturl eprintprefix doiprefix doiurl openinlinelink closeinlinelink } % urlbst... +INTEGERS { hrefform inlinelinks makeinlinelink addeprints adddoiresolver } +% Following constants may be adjusted by hand, if desired +FUNCTION {init.urlbst.variables} +{ + "Available from: " 'urlintro := % prefix before URL + "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref + "arXiv:" 'eprintprefix := % text prefix printed before eprint ref + "http://dx.doi.org/" 'doiurl := % prefix to make URL from DOI + "doi:" 'doiprefix := % text prefix printed before DOI ref + #0 'addeprints := % 0=no eprints; 1=include eprints + #0 'adddoiresolver := % 0=no DOI resolver; 1=include it + #2 'hrefform := % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs + #1 'inlinelinks := % 0=URLs explicit; 1=URLs attached to titles + % the following are internal state variables, not config constants + #0 'makeinlinelink := % state variable managed by setup.inlinelink + "" 'openinlinelink := % ditto + "" 'closeinlinelink := % ditto +} +INTEGERS { + bracket.state + outside.brackets + open.brackets + within.brackets + close.brackets +} +% ...urlbst to here +FUNCTION {init.state.consts} +{ #0 'outside.brackets := % urlbst + #1 'open.brackets := + #2 'within.brackets := + #3 'close.brackets := + + #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +% urlbst +FUNCTION {output.nonnull.original} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +% urlbst... +% The following three functions are for handling inlinelink. They wrap +% a block of text which is potentially output with write$ by multiple +% other functions, so we don't know the content a priori. +% They communicate between each other using the variables makeinlinelink +% (which is true if a link should be made), and closeinlinelink (which holds +% the string which should close any current link. They can be called +% at any time, but start.inlinelink will be a no-op unless something has +% previously set makeinlinelink true, and the two ...end.inlinelink functions +% will only do their stuff if start.inlinelink has previously set +% closeinlinelink to be non-empty. +FUNCTION {setup.inlinelink} +{ makeinlinelink + { hrefform #1 = % hypertex + { "\special {html: }{" * 'openinlinelink := + "\special {html:}" 'closeinlinelink := + } + { hrefform #2 = % hyperref + { "\href{" url * "}{" * 'openinlinelink := + "}" 'closeinlinelink := + } + 'skip$ + if$ % hrefform #2 = + } + if$ % hrefform #1 = + #0 'makeinlinelink := + } + 'skip$ + if$ % makeinlinelink +} +FUNCTION {add.inlinelink} +{ openinlinelink empty$ + 'skip$ + { openinlinelink swap$ * closeinlinelink * + "" 'openinlinelink := + } + if$ +} +FUNCTION {output.nonnull} +{ % Save the thing we've been asked to output + 's := + % If the bracket-state is close.brackets, then add a close-bracket to + % what is currently at the top of the stack, and set bracket.state + % to outside.brackets + bracket.state close.brackets = + { "]" * + outside.brackets 'bracket.state := + } + 'skip$ + if$ + bracket.state outside.brackets = + { % We're outside all brackets -- this is the normal situation. + % Write out what's currently at the top of the stack, using the + % original output.nonnull function. + s + add.inlinelink + output.nonnull.original % invoke the original output.nonnull + } + { % Still in brackets. Add open-bracket or (continuation) comma, add the + % new text (in s) to the top of the stack, and move to the close-brackets + % state, ready for next time (unless inbrackets resets it). If we come + % into this branch, then output.state is carefully undisturbed. + bracket.state open.brackets = + { " [" * } + { ", " * } % bracket.state will be within.brackets + if$ + s * + close.brackets 'bracket.state := + } + if$ +} + +% Call this function just before adding something which should be presented in +% brackets. bracket.state is handled specially within output.nonnull. +FUNCTION {inbrackets} +{ bracket.state close.brackets = + { within.brackets 'bracket.state := } % reset the state: not open nor closed + { open.brackets 'bracket.state := } + if$ +} + +FUNCTION {format.lastchecked} +{ lastchecked empty$ + { "" } + { inbrackets "cited " lastchecked * } + if$ +} +% ...urlbst to here + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem.original} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry.original} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +FUNCTION {scapify} +{ duplicate$ empty$ + { pop$ "" } + { "{\sc " swap$ * "}" * } + if$ +} + +FUNCTION {boldify} +{ duplicate$ empty$ + { pop$ "" } + { "{\bf " swap$ * "}" * } + if$ +} + +% -------------------------------------------------------------- +% -------------------------------------------------------------- + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names scapify } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names scapify + editor num.names$ #1 > + { ", editors" * } + { ", editor" * } + if$ + } + if$ +} + +% this changes the case; very bad for abbreviations like DNA, RNA +%FUNCTION {format.title} +%{ title empty$ +% { "" } +% { title "t" change.case$ } +% if$ +%} + +FUNCTION {format.title} +{ title boldify +} + + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "" volume boldify tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pages" pages n.dashify tie.or.space.connect } + { "page" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null boldify + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In {\em " booktitle * "\/}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +% -------------------------------------------------------------- +% -------------------------------------------------------------- + +% urlbst... +% Functions for making hypertext links. +% In all cases, the stack has (link-text href-url) +% +% make 'null' specials +FUNCTION {make.href.null} +{ + pop$ +} +% make hypertex specials +FUNCTION {make.href.hypertex} +{ + "\special {html: }" * swap$ * + "\special {html:}" * +} +% make hyperref specials +FUNCTION {make.href.hyperref} +{ + "\href {" swap$ * "} {\path{" * swap$ * "}}" * +} +FUNCTION {make.href} +{ hrefform #2 = + 'make.href.hyperref % hrefform = 2 + { hrefform #1 = + 'make.href.hypertex % hrefform = 1 + 'make.href.null % hrefform = 0 (or anything else) + if$ + } + if$ +} + +% If inlinelinks is true, then format.url should be a no-op, since it's +% (a) redundant, and (b) could end up as a link-within-a-link. +FUNCTION {format.url} +{ inlinelinks #1 = url empty$ or + { "" } + { hrefform #1 = + { % special case -- add HyperTeX specials + urlintro "\url{" url * "}" * url make.href.hypertex * } + { urlintro "\url{" * url * "}" * } + if$ + } + if$ +} + +FUNCTION {format.eprint} +{ eprint empty$ + { "" } + { eprintprefix eprint * eprinturl eprint * make.href } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ + { "" } + { doiprefix doi * doiurl doi * make.href } + if$ +} + +% Output a URL. We can't use the more normal idiom (something like +% `format.url output'), because the `inbrackets' within +% format.lastchecked applies to everything between calls to `output', +% so that `format.url format.lastchecked * output' ends up with both +% the URL and the lastchecked in brackets. +FUNCTION {output.url} +{ url empty$ + 'skip$ + { new.block + format.url output + format.lastchecked output + } + if$ +} + +FUNCTION {output.web.refs} +{ + new.block + output.url + addeprints eprint empty$ not and + { format.eprint output.nonnull } + 'skip$ + if$ + adddoiresolver doi empty$ not and + { format.doi output.nonnull } + 'skip$ + if$ +} + +% Wrapper for output.bibitem.original. +% If the URL field is not empty, set makeinlinelink to be true, +% so that an inline link will be started at the next opportunity +FUNCTION {output.bibitem} +{ outside.brackets 'bracket.state := + output.bibitem.original + inlinelinks url empty$ not and + { #1 'makeinlinelink := } + { #0 'makeinlinelink := } + if$ +} + +% Wrapper for fin.entry.original +FUNCTION {fin.entry} +{ output.web.refs % urlbst + makeinlinelink % ooops, it appears we didn't have a title for inlinelink + { setup.inlinelink % add some artificial link text here, as a fallback + "[link]" output.nonnull } + 'skip$ + if$ + bracket.state close.brackets = % urlbst + { "]" * } + 'skip$ + if$ + fin.entry.original +} + +% Webpage entry type. +% Title and url fields required; +% author, note, year, month, and lastchecked fields optional +% See references +% ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm +% http://www.classroom.net/classroom/CitingNetResources.html +% http://neal.ctstateu.edu/history/cite.html +% http://www.cas.usf.edu/english/walker/mla.html +% for citation formats for web pages. +FUNCTION {webpage} +{ output.bibitem + author empty$ + { editor empty$ + 'skip$ % author and editor both optional + { format.editors output.nonnull } + if$ + } + { editor empty$ + { format.authors output.nonnull } + { "can't use both author and editor fields in " cite$ * warning$ } + if$ + } + if$ + new.block + title empty$ 'skip$ 'setup.inlinelink if$ + format.title "title" output.check + inbrackets "online" output + new.block + year empty$ + 'skip$ + { format.date "year" output.check } + if$ + % We don't need to output the URL details ('lastchecked' and 'url'), + % because fin.entry does that for us, using output.web.refs. The only + % reason we would want to put them here is if we were to decide that + % they should go in front of the rather miscellaneous information in 'note'. + new.block + note output + fin.entry +} +% ...urlbst to here + + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkb + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {dphilthesis} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + new.block + "DPhil thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + new.block + note "note" output.check + format.date output + fin.entry +} + +% -------------------------------------------------------------- +% -------------------------------------------------------------- + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +%SORT % uncomment to sort references alphabetically + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.urlbst.variables} +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/vu-cs-standard-thesis/Latex/Classes/PhDthesisPSnPDF.cls b/vu-cs-standard-thesis/Latex/Classes/PhDthesisPSnPDF.cls new file mode 100644 index 0000000..d076c3d --- /dev/null +++ b/vu-cs-standard-thesis/Latex/Classes/PhDthesisPSnPDF.cls @@ -0,0 +1,409 @@ + +%--------------------------------------------------------------- +% PhDthesis version 2 style file by Jakob Suckale, 2007 +% based on CUEDthesis version 1 by Harish Bhanderi 2002 +%--------------------------------------------------------------- + + + +%-------------------------- identification --------------------- +%\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{Latex/Classes/PhDthesisPSnPDF}[2007/09/06 v2 PhD thesis class] + + +%:-------------------------- report or book ----------------------- + +%If you want to use a Report style document then uncomment the following 3 lines and comment the below 8 book style lines: +%\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}} +%\ProcessOptions\relax +%%\LoadClass[a4paper]{report} +%\ifx\pdfoutput\undefined +% \LoadClass[dvips, a4paper]{report} +%\else +% \LoadClass[pdftex, a4paper]{report} +%\fi + +%%Bibliography +%%uncomment next line to change bibliography name to references for Report document class +%\renewcommand{\refname}{References} + +%If you want to use a Book style document then uncomment the following 3 lines and comment the above 8 report style lines: +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}} +\ProcessOptions\relax +\ifx\pdfoutput\undefined + \LoadClass[dvips, a4paper]{book} +\else + \LoadClass[pdftex, a4paper]{book} +\fi + + +%:-------------------------- packages for fancy things ----------------------- + +\usepackage{amssymb} +\usepackage{graphics} % for improved inclusion of graphics +%\usepackage{wrapfig} % to include figure with text wrapping around it +\usepackage[margin=10pt,font=small,labelfont=bf]{caption} % for improved layout of figure captions with extra margin, smaller font than text +\usepackage{fancyhdr} % for better header layout +\usepackage{eucal} +\usepackage[english]{babel} +\usepackage[usenames, dvipsnames]{color} +\usepackage[perpage]{footmisc} +\usepackage[round, sort, numbers]{natbib} +\usepackage{ifthen} +\usepackage{multicol} % for pages with multiple text columns, e.g. References +\setlength{\columnsep}{20pt} % space between columns; default 10pt quite narrow +\usepackage[nottoc]{tocbibind} % correct page numbers for bib in TOC, nottoc suppresses an entry for TOC itself +%\usepackage{nextpage} + +%:-------------------------- Glossary/Abbrev./Symbols ----------------------- + +\usepackage[intoc]{nomencl} % load nomencl extension; include in TOC +%\nomrefpage % to include page numbers after abbrevations +\renewcommand{\nomname}{Glossary} % rename nomenclature +\renewcommand{\nomlabel}[1]{\textbf{#1}} % make abbreviations bold +\makenomenclature % used to be \makeglossary +\newcommand{\g}{\footnote{For all abbreviations see the glossary on page \pageref{nom}.}} % type "\g" to refer to glossary + +% used to be for sorting into categories: +%\renewcommand\nomgroup[1]{% +% \ifthenelse{\equal{#1}{A}}{% +% \item[\textbf{Roman Symbols}] }{% A - Roman +% \ifthenelse{\equal{#1}{G}}{% +% \item[\textbf{Greek Symbols}]}{% G - Greek +% \ifthenelse{\equal{#1}{R}}{% +% \item[\textbf{Superscripts}]}{% R - Superscripts +% \ifthenelse{\equal{#1}{S}}{% +% \item[\textbf{Subscripts}]}{{% S - Subscripts +% \ifthenelse{\equal{#1}{X}}{% +% \item[\textbf{Other Symbols}]}{{% X - Other Symbols +% \ifthenelse{\equal{#1}{Z}}{% +% \item[\textbf{Acronyms}]}% Z - Acronyms +% {{}}}}}}}}}} + + +%:-------------------------- PDF/PS setup ----------------------- + +%if you use a macTeX 2008 or later, use the ifpdf package +\usepackage{ifpdf} + +%if you use an older version, uncomment these lines: +%\newif \ifpdf +% \ifx \pdfoutput \undefined + % for running latex +% \pdffalse +% \else + % for running pdflatex +% \pdfoutput = 1 % positive value for a PDF output + % otherwise a DVI +% \pdftrue +%\fi + +\ifpdf +%--> +%--> Google.com search "hyperref options" +%--> +%--> http://www.ai.mit.edu/lab/sysadmin/latex/documentation/latex/hyperref/manual.pdf +%--> http://www.chemie.unibas.ch/~vogtp/LaTeX2PDFLaTeX.pdf +%--> http://www.uni-giessen.de/partosch/eurotex99/ oberdiek/print/sli4a4col.pdf +%--> http://me.in-berlin.de/~miwie/tex-refs/html/latex-packages.html +%--> + \usepackage[ pdftex, plainpages = false, pdfpagelabels, + pdfpagelayout = useoutlines, + bookmarks, + bookmarksopen = true, + bookmarksnumbered = true, + breaklinks = true, + linktocpage, + pagebackref, + colorlinks = false, % was true + linkcolor = blue, + urlcolor = blue, + citecolor = red, + anchorcolor = green, + hyperindex = true, + hyperfigures + ]{hyperref} + + \DeclareGraphicsExtensions{.png, .jpg, .jpeg, .pdf, .gif} %GIF doesn't work?? + \usepackage[pdftex]{graphicx} + \pdfcompresslevel=9 + \graphicspath{{0_frontmatter/figures/PNG/}{0_frontmatter/figures/PDF/}{0_frontmatter/figures/}} +\else + \usepackage[ dvips, + bookmarks, + bookmarksopen = true, + bookmarksnumbered = true, + breaklinks = true, + linktocpage, + pagebackref, + colorlinks = true, + linkcolor = blue, + urlcolor = blue, + citecolor = red, + anchorcolor = green, + hyperindex = true, + hyperfigures + ]{hyperref} + + \DeclareGraphicsExtensions{.eps, .ps} + \usepackage{epsfig} + \usepackage{graphicx} + \graphicspath{{0_frontmatter/figures/EPS/}{0_frontmatter/figures/}} +\fi + + +%:-------------------------- page layout ----------------------- + +%A4 settings +\ifpdf + \pdfpageheight=297mm + \pdfpagewidth=210mm +\else + \setlength{\paperheight}{297mm} + \setlength{\paperwidth}{210mm} +\fi + +\setlength{\hoffset}{0.00cm} +\setlength{\voffset}{0.00cm} + +%: Uncomment this secion for two-sided printing +% ------------------------------ +\setlength{\oddsidemargin}{1.5cm} +\setlength{\evensidemargin}{0cm} +\setlength{\topmargin}{1mm} +\setlength{\headheight}{1.36cm} +\setlength{\headsep}{1.00cm} +\setlength{\textheight}{20.84cm} +\setlength{\textwidth}{14.5cm} +\setlength{\marginparsep}{1mm} +\setlength{\marginparwidth}{3cm} +\setlength{\footskip}{2.36cm} + + +%: Uncomment this secion for one-sided printing +% taken from the original file, but with the first two lanes modified +% ------------------------------ +%\setlength{\evensidemargin}{1.9cm} % was 1.96cm in original +%\setlength{\oddsidemargin}{-0.001cm} % was -0.54cm in original file +%\setlength{\topmargin}{1mm} +%\setlength{\headheight}{1.36cm} +%\setlength{\headsep}{1.00cm} +%\setlength{\textheight}{20.84cm} +%\setlength{\textwidth}{14.5cm} +%\setlength{\marginparsep}{1mm} +%\setlength{\marginparwidth}{3cm} +%\setlength{\footskip}{2.36cm} + + +%: section below defines fancy page layout options +% ------------------------------ +\pagestyle{fancy} +\renewcommand{\chaptermark}[1]{\markboth{\MakeUppercase{\thechapter. #1 }}{}} +\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} +\fancyhf{} +\fancyhead[RO]{\bfseries\rightmark} +\fancyhead[LE]{\bfseries\leftmark} +\fancyfoot[C]{\thepage} +\renewcommand{\headrulewidth}{0.5pt} +\renewcommand{\footrulewidth}{0pt} +\addtolength{\headheight}{0.5pt} +\fancypagestyle{plain}{ + \fancyhead{} + \renewcommand{\headrulewidth}{0pt} +} + + + + + +%:-------------------------- title page layout ----------------------- + +% starts roman page numbering until chapter 1 +% important to avoid two pages numbered 1 and 2 which may cause bad links +% bug: cover i + back side ii and then numbering restarts with i; should be iii +\renewcommand{\thepage}{\roman{page}} + +\newcommand{\submittedtext}{{A thesis submitted for the degree of}} + +% DECLARATIONS +% These macros are used to declare arguments needed for the +% construction of the title page and other preamble. + +% The year and term the degree will be officially conferred +\def\degreedate#1{\gdef\@degreedate{#1}} +% The full (unabbreviated) name of the degree +\def\degree#1{\gdef\@degree{#1}} +% The name of your college or department(eg. Trinity, Pembroke, Maths, Physics) +\def\collegeordept#1{\gdef\@collegeordept{#1}} +% The name of your University +\def\university#1{\gdef\@university{#1}} +% Defining the crest +\def\crest#1{\gdef\@crest{#1}} +% Stating the city of birth for title page where needed; uncommented for use +%\def\cityofbirth#1{\gdef\@cityofbirth{#1}} + +% These macros define an environment for front matter that is always +% single column even in a double-column document. + +\newenvironment{alwayssingle}{% + \@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \else\newpage\fi} + {\if@restonecol\twocolumn\else\newpage\fi} + +%define title page layout +\renewcommand{\maketitle}{% +\begin{alwayssingle} + \renewcommand{\footnotesize}{\small} + \renewcommand{\footnoterule}{\relax} + \thispagestyle{empty} +% \null\vfill + \begin{center} + { \Huge {\bfseries {\@title}} \par} +{\large \vspace*{35mm} {{\@crest} \par} \vspace*{25mm}} + {{\Large \@author} \par} +% \vspace*{1ex} +% {{\@cityofbirth} \par} +{\large + \vspace*{1ex} + {{\@collegeordept} \par} + \vspace*{1ex} + {{\@university} \par} + \vspace*{25mm} + {{\submittedtext} \par} + \vspace*{1ex} + {\it {\@degree} \par} + \vspace*{2ex} + {\@degreedate} +}%end large + \end{center} + \null\vfill +\end{alwayssingle}} + +% page number for cover back side should have page number blanked + + +%:-------------------------- front matter layout ----------------------- + +% DEDICATION +% +% The dedication environment makes sure the dedication gets its +% own page and is set out in verse format. + +\newenvironment{dedication} +{\begin{alwayssingle} + \pagestyle{empty} + \begin{center} + \vspace*{1.5cm} + {\LARGE } + \end{center} + \vspace{0.5cm} + \begin{quote} \begin{center}} +{\end{center} \end{quote} \end{alwayssingle}} + + +% ACKNOWLEDGEMENTS +% +% The acknowledgements environment puts a large, bold, centered +% "Acknowledgements" label at the top of the page. The acknowledgements +% themselves appear in a quote environment, i.e. tabbed in at both sides, and +% on its own page. + +\newenvironment{acknowledgements} +{\pagestyle{empty} +\begin{alwayssingle} +\begin{center} +\vspace*{1.5cm} +{\Large \bfseries Acknowledgements} +\end{center} +\vspace{0.5cm} +\begin{quote}} +{\end{quote}\end{alwayssingle}} + +% The acknowledgementslong environment puts a large, bold, centered +% "Acknowledgements" label at the top of the page. The acknowledgement itself +% does not appears in a quote environment so you can get more in. + +\newenvironment{acknowledgementslong} +{\pagestyle{empty} +\begin{alwayssingle} +\begin{center} +\vspace*{1.5cm} +{\Large \bfseries Acknowledgements} +\end{center} +\vspace{0.5cm}\begin{quote}} +{\end{quote}\end{alwayssingle}} + +%ABSTRACT +% +%The abstract environment puts a large, bold, centered "Abstract" label at +%the top of the page. The abstract itself appears in a quote environment, +%i.e. tabbed in at both sides, and on its own page. + +\newenvironment{abstracts} {\begin{alwayssingle} \pagestyle{empty} + \begin{center} + \vspace*{1.5cm} + {\Large \bfseries Abstract} + \end{center} + \vspace{0.5cm} + \begin{quote}} +{\end{quote}\end{alwayssingle}} + +%The abstractlong environment puts a large, bold, centered "Abstract" label at +%the top of the page. The abstract itself does not appears in a quote +%environment so you can get more in. + +\newenvironment{abstractslong} {\begin{alwayssingle} \pagestyle{empty} + \begin{center} + \vspace*{1.5cm} + {\Large \bfseries Abstract} + \end{center} + \vspace{0.5cm} \begin{quote}} +{\end{quote}\end{alwayssingle}} + +%The abstractseparate environment is for running of a page with the abstract +%on including title and author etc as required to be handed in separately + +\newenvironment{abstractseparate} {\begin{alwayssingle} \pagestyle{empty} + \vspace*{-1in} + \begin{center} + { \Large {\bfseries {\@title}} \par} + {{\large \vspace*{1ex} \@author} \par} +{\large \vspace*{1ex} + {{\@collegeordept} \par} + {{\@university} \par} +\vspace*{1ex} + {{\it \submittedtext} \par} + {\it {\@degree} \par} +\vspace*{2ex} + {\@degreedate}} + \end{center}} +{\end{alwayssingle}} + +%Statement of originality if required + +\newenvironment{declaration} {\begin{alwayssingle} \pagestyle{empty} + \begin{center} + \vspace*{1.5cm} + {\Large \bfseries Declaration} + \end{center} + \vspace{0.5cm} + \begin{quote}} +{\end{quote}\end{alwayssingle}} + + +%:-------------------------- page numbers: roman+arabic ----------------------- + +% ROMANPAGES +% +% The romanpages environment set the page numbering to lowercase roman one +% for the contents and figures lists. It also resets +% page-numbering for the remainder of the dissertation (arabic, starting at 1). + +%\newenvironment{romanpages} +%{ +% \setcounter{page}{1} +% \renewcommand{\thepage}{\roman{page}} +%} % close romanpage env't + +{\newpage\renewcommand{\thepage}{\arabic{page}}\setcounter{page}{1}} + diff --git a/vu-cs-standard-thesis/Latex/Classes/elsarticle-num.bst b/vu-cs-standard-thesis/Latex/Classes/elsarticle-num.bst new file mode 100644 index 0000000..24654f1 --- /dev/null +++ b/vu-cs-standard-thesis/Latex/Classes/elsarticle-num.bst @@ -0,0 +1,1507 @@ +%% +%% This is file `elsarticle-num.bst', +%% +%% Copyright 2007, 2008, 2009 Elsevier Ltd +%% +%% This file is part of the 'Elsarticle Bundle'. +%% --------------------------------------------- +%% +%% It may be distributed under the conditions of the LaTeX Project Public +%% License, either version 1.2 of this license or (at your option) any +%% later version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% The list of all files belonging to the 'Elsarticle Bundle' is +%% given in the file `manifest.txt'. +%% +%% +%% $Id: elsarticle-num.bst 19 2009-12-17 07:07:52Z rishi $ +%% +%% +%% ---------------------------------------- +%% +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + eprint % urlbst + doi % urlbst + url % urlbst + lastchecked % urlbst + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +STRINGS { urlintro eprinturl eprintprefix doiprefix doiurl openinlinelink closeinlinelink } % urlbst... +INTEGERS { hrefform inlinelinks makeinlinelink addeprints adddoiresolver } +FUNCTION {init.urlbst.variables} +{ + "Available from: " 'urlintro := % prefix before URL + "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref + "arXiv:" 'eprintprefix := % text prefix printed before eprint ref + "http://dx.doi.org/" 'doiurl := % prefix to make URL from DOI + "doi:" 'doiprefix := % text prefix printed before DOI ref + #1 'addeprints := % 0=no eprints; 1=include eprints + #1 'adddoiresolver := % 0=no DOI resolver; 1=include it + #2 'hrefform := % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs + #1 'inlinelinks := % 0=URLs explicit; 1=URLs attached to titles + % the following are internal state variables, not config constants + #0 'makeinlinelink := % state variable managed by setup.inlinelink + "" 'openinlinelink := % ditto + "" 'closeinlinelink := % ditto +} +INTEGERS { + bracket.state + outside.brackets + open.brackets + within.brackets + close.brackets +} +FUNCTION {init.state.consts} +{ #0 'outside.brackets := % urlbst + #1 'open.brackets := + #2 'within.brackets := + #3 'close.brackets := + + #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +FUNCTION {output.nonnull.original} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {setup.inlinelink} +{ makeinlinelink + { hrefform #1 = % hypertex + { "\special {html: }{" * 'openinlinelink := + "\special {html:}" 'closeinlinelink := + } + { hrefform #2 = % hyperref + { "\href{" url * "}{" * 'openinlinelink := + "}" 'closeinlinelink := + } + 'skip$ + if$ % hrefform #2 = + } + if$ % hrefform #1 = + #0 'makeinlinelink := + } + 'skip$ + if$ % makeinlinelink +} +FUNCTION {add.inlinelink} +{ openinlinelink empty$ + 'skip$ + { openinlinelink swap$ * closeinlinelink * + "" 'openinlinelink := + } + if$ +} +FUNCTION {output.nonnull} +{ % Save the thing we've been asked to output + 's := + % If the bracket-state is close.brackets, then add a close-bracket to + % what is currently at the top of the stack, and set bracket.state + % to outside.brackets + bracket.state close.brackets = + { "]" * + outside.brackets 'bracket.state := + } + 'skip$ + if$ + bracket.state outside.brackets = + { % We're outside all brackets -- this is the normal situation. + % Write out what's currently at the top of the stack, using the + % original output.nonnull function. + s + add.inlinelink + output.nonnull.original % invoke the original output.nonnull + } + { % Still in brackets. Add open-bracket or (continuation) comma, add the + % new text (in s) to the top of the stack, and move to the close-brackets + % state, ready for next time (unless inbrackets resets it). If we come + % into this branch, then output.state is carefully undisturbed. + bracket.state open.brackets = + { " [" * } + { ", " * } % bracket.state will be within.brackets + if$ + s * + close.brackets 'bracket.state := + } + if$ +} + +FUNCTION {inbrackets} +{ bracket.state close.brackets = + { within.brackets 'bracket.state := } % reset the state: not open nor closed + { open.brackets 'bracket.state := } + if$ +} + +FUNCTION {format.lastchecked} +{ lastchecked empty$ + { "" } + { inbrackets "cited " lastchecked * } + if$ +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {fin.entry.original} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {add.blank} +{ " " * before.all 'output.state := +} + +FUNCTION {date.block} +{ + add.blank +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ skip$ } + +FUNCTION {capitalize} +{ "u" change.case$ "t" change.case$ } + +FUNCTION {space.word} +{ " " swap$ * " " * } + + % Here are the language-specific definitions for explicit words. + % Each function has a name bbl.xxx where xxx is the English word. + % The language selected here is ENGLISH +FUNCTION {bbl.and} +{ "and"} + +FUNCTION {bbl.etal} +{ "et~al." } + +FUNCTION {bbl.editors} +{ "Eds." } + +FUNCTION {bbl.editor} +{ "Ed." } + +FUNCTION {bbl.edby} +{ "edited by" } + +FUNCTION {bbl.edition} +{ "Edition" } + +FUNCTION {bbl.volume} +{ "Vol." } + +FUNCTION {bbl.of} +{ "of" } + +FUNCTION {bbl.number} +{ "no." } + +FUNCTION {bbl.nr} +{ "no." } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +{ "pp." } + +FUNCTION {bbl.page} +{ "p." } + +FUNCTION {bbl.chapter} +{ "Ch." } + +FUNCTION {bbl.techrep} +{ "Tech. Rep." } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +FUNCTION {bbl.first} +{ "1st" } + +FUNCTION {bbl.second} +{ "2nd" } + +FUNCTION {bbl.third} +{ "3rd" } + +FUNCTION {bbl.fourth} +{ "4th" } + +FUNCTION {bbl.fifth} +{ "5th" } + +FUNCTION {bbl.st} +{ "st" } + +FUNCTION {bbl.nd} +{ "nd" } + +FUNCTION {bbl.rd} +{ "rd" } + +FUNCTION {bbl.th} +{ "th" } + +MACRO {jan} {"Jan."} + +MACRO {feb} {"Feb."} + +MACRO {mar} {"Mar."} + +MACRO {apr} {"Apr."} + +MACRO {may} {"May"} + +MACRO {jun} {"Jun."} + +MACRO {jul} {"Jul."} + +MACRO {aug} {"Aug."} + +MACRO {sep} {"Sep."} + +MACRO {oct} {"Oct."} + +MACRO {nov} {"Nov."} + +MACRO {dec} {"Dec."} + +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bbl.st * } + { duplicate$ "2" = + { pop$ bbl.nd * } + { "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +MACRO {acmcs} {"ACM Comput. Surv."} + +MACRO {acta} {"Acta Inf."} + +MACRO {cacm} {"Commun. ACM"} + +MACRO {ibmjrd} {"IBM J. Res. Dev."} + +MACRO {ibmsj} {"IBM Syst.~J."} + +MACRO {ieeese} {"IEEE Trans. Softw. Eng."} + +MACRO {ieeetc} {"IEEE Trans. Comput."} + +MACRO {ieeetcad} + {"IEEE Trans. Comput.-Aided Design Integrated Circuits"} + +MACRO {ipl} {"Inf. Process. Lett."} + +MACRO {jacm} {"J.~ACM"} + +MACRO {jcss} {"J.~Comput. Syst. Sci."} + +MACRO {scp} {"Sci. Comput. Programming"} + +MACRO {sicomp} {"SIAM J. Comput."} + +MACRO {tocs} {"ACM Trans. Comput. Syst."} + +MACRO {tods} {"ACM Trans. Database Syst."} + +MACRO {tog} {"ACM Trans. Gr."} + +MACRO {toms} {"ACM Trans. Math. Softw."} + +MACRO {toois} {"ACM Trans. Office Inf. Syst."} + +MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."} + +MACRO {tcs} {"Theoretical Comput. Sci."} + +FUNCTION {write.url} +{ url empty$ + { skip$ } + { "\newline\urlprefix\url{" url * "}" * write$ newline$ } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{f.~}{vv~}{ll}{, jj}" format.name$ + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + "," * + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " " * bbl.etal * + } + { " " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} +FUNCTION {format.names.ed} +{ format.names } +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { " (" * bbl.editors * ")" * } + { " (" * bbl.editor * ")" * } + if$ + } + if$ +} + +FUNCTION {format.in.editors} +{ editor empty$ + { "" } + { editor format.names.ed + editor num.names$ #1 > + { " (" * bbl.editors * ")" * } + { " (" * bbl.editor * ")" * } + if$ + } + if$ +} + +FUNCTION {format.note} +{ + note empty$ + { "" } + { note #1 #1 substring$ + duplicate$ "{" = + 'skip$ + { output.state mid.sentence = + { "l" } + { "u" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ + } + if$ +} + +FUNCTION {output.bibitem.original} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {n.dashify} +{ + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {word.in} +{ bbl.in + ":" * + " " * } + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ + duplicate$ empty$ + 'skip$ + { + before.all 'output.state := + " (" swap$ * ")" * + } + if$ +} + +FUNCTION{format.year} +{ year duplicate$ empty$ + { "empty year in " cite$ * warning$ pop$ "" } + { "(" swap$ * ")" * } + if$ +} + +FUNCTION {format.btitle} +{ title +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { bbl.volume volume tie.or.space.connect + series empty$ + 'skip$ + { bbl.of space.word * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { bbl.number } + { bbl.number capitalize } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { bbl.in space.word * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +FUNCTION {convert.edition} +{ edition extract.num "l" change.case$ 's := + s "first" = s "1" = or + { bbl.first 't := } + { s "second" = s "2" = or + { bbl.second 't := } + { s "third" = s "3" = or + { bbl.third 't := } + { s "fourth" = s "4" = or + { bbl.fourth 't := } + { s "fifth" = s "5" = or + { bbl.fifth 't := } + { s #1 #1 substring$ is.num + { s eng.ord 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { convert.edition "l" change.case$ " " * bbl.edition * } + { convert.edition "t" change.case$ " " * bbl.edition * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { bbl.pages pages n.dashify tie.or.space.connect } + { bbl.page pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.journal.pages} +{ pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { + " " * + format.year * " " * + pages n.dashify * + } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ + % volume field.or.null + " " + volume empty$ + { pop$ "" } + { volume * } + if$ + number empty$ + 'skip$ + { + "~(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + { "" } + { type empty$ + { bbl.chapter } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { word.in booktitle * } + { word.in format.in.editors * ", " * + booktitle * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { bbl.techrep } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ + key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { word.in journal emphasize * } + if$ + } + { word.in key * " " *} + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ + " " * bbl.etal * + } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { + " " * bbl.etal * + } + { bbl.and space.word * editor #2 "{vv~}{ll}" format.name$ + * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + word.in + } + { bbl.volume volume tie.or.space.connect + bbl.of space.word * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { series emphasize * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { word.in booktitle * } + if$ + } + { word.in key * " " *} + if$ + } + { word.in format.crossref.editor * " " *} + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.org.or.pub} +{ 't := + "" + year empty$ + { "empty year in " cite$ * warning$ } + 'skip$ + if$ + address empty$ t empty$ and + year empty$ and + 'skip$ + { + t empty$ + { address empty$ + 'skip$ + { address * } + if$ + } + { t * + address empty$ + 'skip$ + { ", " * address * } + if$ + } + if$ + year empty$ + 'skip$ + { t empty$ address empty$ and + 'skip$ + { ", " * } + if$ + year * + } + if$ + } + if$ +} + +FUNCTION {format.publisher.address} +{ publisher empty$ + { "empty publisher in " cite$ * warning$ + "" + } + { publisher } + if$ + format.org.or.pub +} + +FUNCTION {format.organization.address} +{ organization empty$ + { "" } + { organization } + if$ + format.org.or.pub +} + +FUNCTION {make.href.null} +{ + pop$ +} +FUNCTION {make.href.hypertex} +{ + "\special {html: }" * swap$ * + "\special {html:}" * +} +FUNCTION {make.href.hyperref} +{ + "\href {" swap$ * "} {\path{" * swap$ * "}}" * +} +FUNCTION {make.href} +{ hrefform #2 = + 'make.href.hyperref % hrefform = 2 + { hrefform #1 = + 'make.href.hypertex % hrefform = 1 + 'make.href.null % hrefform = 0 (or anything else) + if$ + } + if$ +} + +FUNCTION {format.url} +{ inlinelinks #1 = url empty$ or + { "" } + { hrefform #1 = + { % special case -- add HyperTeX specials + urlintro "\url{" url * "}" * url make.href.hypertex * } + { urlintro "\url{" * url * "}" * } + if$ + } + if$ +} + +FUNCTION {format.eprint} +{ eprint empty$ + { "" } + { eprintprefix eprint * eprinturl eprint * make.href } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ + { "" } + { doiprefix doi * doiurl doi * make.href } + if$ +} + +FUNCTION {output.url} +{ url empty$ + 'skip$ + { new.block + format.url output + format.lastchecked output + } + if$ +} + +FUNCTION {output.web.refs} +{ + new.block + output.url + addeprints eprint empty$ not and + { format.eprint output.nonnull } + 'skip$ + if$ + adddoiresolver doi empty$ not and + { format.doi output.nonnull } + 'skip$ + if$ +} + +FUNCTION {output.bibitem} +{ outside.brackets 'bracket.state := + output.bibitem.original + inlinelinks url empty$ not and + { #1 'makeinlinelink := } + { #0 'makeinlinelink := } + if$ +} + +FUNCTION {fin.entry} +{ output.web.refs % urlbst + makeinlinelink % ooops, it appears we didn't have a title for inlinelink + { setup.inlinelink % add some artificial link text here, as a fallback + "[link]" output.nonnull } + 'skip$ + if$ + bracket.state close.brackets = % urlbst + { "]" * } + 'skip$ + if$ + fin.entry.original +} + +FUNCTION {webpage} +{ output.bibitem + author empty$ + { editor empty$ + 'skip$ % author and editor both optional + { format.editors output.nonnull } + if$ + } + { editor empty$ + { format.authors output.nonnull } + { "can't use both author and editor fields in " cite$ * warning$ } + if$ + } + if$ + new.block + title empty$ 'skip$ 'setup.inlinelink if$ + format.title "title" output.check + inbrackets "online" output + new.block + year empty$ + 'skip$ + { format.date "year" output.check } + if$ + % We don't need to output the URL details ('lastchecked' and 'url'), + % because fin.entry does that for us, using output.web.refs. The only + % reason we would want to put them here is if we were to decide that + % they should go in front of the rather miscellaneous information in 'note'. + new.block + note output + fin.entry +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + crossref missing$ + { journal + "journal" output.check + % add.blank + before.all 'output.state := + format.vol.num.pages output + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + format.journal.pages + format.note output + fin.entry + write.url +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + crossref missing$ + { format.edition output + format.bvolume output + format.number.series output + format.publisher.address output + } + { + format.book.crossref output.nonnull + } + if$ + format.note output + fin.entry + write.url +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + howpublished output + address output + format.note output + format.date output + fin.entry + write.url +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + crossref missing$ + { + format.edition output + format.bvolume output + format.number.series output + format.publisher.address output + format.chapter.pages "chapter and pages" output.check + } + { + format.chapter.pages "chapter and pages" output.check + format.book.crossref output.nonnull + } + if$ + format.pages "pages" output.check + format.note output + fin.entry + write.url +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.edition output + format.bvolume output + format.number.series output + format.publisher.address output + format.chapter.pages output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + format.pages "pages" output.check + format.note output + fin.entry + write.url +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.edition output + format.bvolume output + format.number.series output + publisher empty$ + { format.organization.address output } + { organization output + format.publisher.address output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + } + if$ + format.pages "pages" output.check + format.note output + fin.entry + write.url +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + author empty$ + { organization empty$ + { + address output + } + 'skip$ + if$ + } + { + organization output + address output + } + if$ + format.edition output + format.note output + format.date output + fin.entry + write.url +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + bbl.mthesis format.thesis.type output.nonnull + school "school" output.check + address output + format.note output + format.date "year" output.check + fin.entry + write.url +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title output + howpublished output + format.note output + format.date output + fin.entry + write.url + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + bbl.phdthesis format.thesis.type output.nonnull + school "school" output.check + address output + format.note output + format.date "year" output.check + fin.entry + write.url +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.btitle "title" output.check + format.bvolume output + format.number.series output + editor empty$ + { publisher empty$ + 'skip$ + { + format.publisher.address output + } + if$ + } + { publisher empty$ + { + format.organization.address output } + { + organization output + format.publisher.address output + } + if$ + } + if$ + format.note output + fin.entry + write.url +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + format.tr.number output.nonnull + institution "institution" output.check + address output + format.note output + format.date "year" output.check + fin.entry + write.url +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst + format.title "title" output.check + format.note "note" output.check + format.date output + fin.entry + write.url +} + +FUNCTION {default.type} { misc } + +READ + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * + write$ newline$ + "\expandafter\ifx\csname url\endcsname\relax" + write$ newline$ + " \def\url#1{\texttt{#1}}\fi" + write$ newline$ + "\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi" + write$ newline$ + "\expandafter\ifx\csname href\endcsname\relax" + write$ newline$ + " \def\href#1#2{#2} \def\path#1{#1}\fi" + write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.urlbst.variables} +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} +%% End of customized bst file +%% +%% End of file `elsarticle-num.bst'. + + diff --git a/vu-cs-standard-thesis/Latex/Classes/jmb.bst b/vu-cs-standard-thesis/Latex/Classes/jmb.bst new file mode 100644 index 0000000..d62c9c2 --- /dev/null +++ b/vu-cs-standard-thesis/Latex/Classes/jmb.bst @@ -0,0 +1,1533 @@ +%% +%% This is file `jmb.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% merlin.mbs (with options: `ay,nat,seq-lab,nm-rvv,jnrlst,keyxyr,dt-beg,yr-par,yrp-per,note-yr,vol-bf,vnum-x,volp-com,num-xser,blk-tit,ppx,ed,abr,ord,jabr,amper,and-xcom,etal-it') +%% ---------------------------------------- +%% *** JMB *** +%% +%% Copyright 1994-2000 Patrick W Daly + % =============================================================== + % IMPORTANT NOTICE: + % This bibliographic style (bst) file has been generated from one or + % more master bibliographic style (mbs) files, listed above. + % + % This generated file can be redistributed and/or modified under the terms + % of the LaTeX Project Public License Distributed from CTAN + % archives in directory macros/latex/base/lppl.txt; either + % version 1 of the License, or any later version. + % =============================================================== + % Name and version information of the main mbs file: + % \ProvidesFile{merlin.mbs}[2000/05/04 4.01 (PWD, AO, DPC)] + % For use with BibTeX version 0.99a or later + %------------------------------------------------------------------- + % This bibliography style file is intended for texts in ENGLISH + % This is an author-year citation style bibliography. As such, it is + % non-standard LaTeX, and requires a special package file to function properly. + % Such a package is natbib.sty by Patrick W. Daly + % The form of the \bibitem entries is + % \bibitem[Jones et al.(1990)]{key}... + % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}... + % The essential feature is that the label (the part in brackets) consists + % of the author names, as they should appear in the citation, with the year + % in parentheses following. There must be no space before the opening + % parenthesis! + % With natbib v5.3, a full list of authors may also follow the year. + % In natbib.sty, it is possible to define the type of enclosures that is + % really wanted (brackets or parentheses), but in either case, there must + % be parentheses in the label. + % The \cite command functions as follows: + % \citet{key} ==>> Jones et al. (1990) + % \citet*{key} ==>> Jones, Baker, and Smith (1990) + % \citep{key} ==>> (Jones et al., 1990) + % \citep*{key} ==>> (Jones, Baker, and Smith, 1990) + % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2) + % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990) + % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32) + % \citeauthor{key} ==>> Jones et al. + % \citeauthor*{key} ==>> Jones, Baker, and Smith + % \citeyear{key} ==>> 1990 + %--------------------------------------------------------------------- + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label extra.label sort.label short.list } +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} +STRINGS { s t} +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} +FUNCTION {add.blank} +{ " " * before.all 'output.state := +} + +FUNCTION {date.block} +{ + new.sentence +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "\/}" * } + if$ +} +FUNCTION {scapify} +{ duplicate$ empty$ + { pop$ "" } + { "{\sc " swap$ * "}" * } + if$ +} +FUNCTION {bolden} +{ duplicate$ empty$ + { pop$ "" } + { "{\bf " swap$ * "}" * } + if$ +} +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} + +FUNCTION {capitalize} +{ "u" change.case$ "t" change.case$ } + +FUNCTION {space.word} +{ " " swap$ * " " * } + % Here are the language-specific definitions for explicit words. + % Each function has a name bbl.xxx where xxx is the English word. + % The language selected here is ENGLISH +FUNCTION {bbl.and} +{ "and"} + +FUNCTION {bbl.etal} +{ "et~al." } + +FUNCTION {bbl.editors} +{ "eds." } + +FUNCTION {bbl.editor} +{ "ed." } + +FUNCTION {bbl.edby} +{ "edited by" } + +FUNCTION {bbl.edition} +{ "edn." } + +FUNCTION {bbl.volume} +{ "vol." } + +FUNCTION {bbl.of} +{ "of" } + +FUNCTION {bbl.number} +{ "no." } + +FUNCTION {bbl.nr} +{ "no." } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +{ "" } + +FUNCTION {bbl.page} +{ "" } + +FUNCTION {bbl.chapter} +{ "chap." } + +FUNCTION {bbl.techrep} +{ "Tech. Rep." } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +FUNCTION {bbl.first} +{ "1st" } + +FUNCTION {bbl.second} +{ "2nd" } + +FUNCTION {bbl.third} +{ "3rd" } + +FUNCTION {bbl.fourth} +{ "4th" } + +FUNCTION {bbl.fifth} +{ "5th" } + +FUNCTION {bbl.st} +{ "st" } + +FUNCTION {bbl.nd} +{ "nd" } + +FUNCTION {bbl.rd} +{ "rd" } + +FUNCTION {bbl.th} +{ "th" } + +MACRO {jan} {"Jan."} + +MACRO {feb} {"Feb."} + +MACRO {mar} {"Mar."} + +MACRO {apr} {"Apr."} + +MACRO {may} {"May"} + +MACRO {jun} {"Jun."} + +MACRO {jul} {"Jul."} + +MACRO {aug} {"Aug."} + +MACRO {sep} {"Sep."} + +MACRO {oct} {"Oct."} + +MACRO {nov} {"Nov."} + +MACRO {dec} {"Dec."} + +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bbl.st * } + { duplicate$ "2" = + { pop$ bbl.nd * } + { "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +MACRO {acmcs} {"ACM Comput. Surv."} + +MACRO {acta} {"Acta Inf."} + +MACRO {cacm} {"Commun. ACM"} + +MACRO {ibmjrd} {"IBM J. Res. Dev."} + +MACRO {ibmsj} {"IBM Syst.~J."} + +MACRO {ieeese} {"IEEE Trans. Software Eng."} + +MACRO {ieeetc} {"IEEE Trans. Comput."} + +MACRO {ieeetcad} + {"IEEE Trans. Comput. Aid. Des."} + +MACRO {ipl} {"Inf. Process. Lett."} + +MACRO {jacm} {"J.~ACM"} + +MACRO {jcss} {"J.~Comput. Syst. Sci."} + +MACRO {scp} {"Sci. Comput. Program."} + +MACRO {sicomp} {"SIAM J. Comput."} + +MACRO {tocs} {"ACM Trans. Comput. Syst."} + +MACRO {tods} {"ACM Trans. Database Syst."} + +MACRO {tog} {"ACM Trans. Graphic."} + +MACRO {toms} {"ACM Trans. Math. Software"} + +MACRO {toois} {"ACM Trans. Office Inf. Syst."} + +MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} + +MACRO {tcs} {"Theor. Comput. Sci."} + +FUNCTION {bibinfo.check} +{ swap$ + duplicate$ missing$ + { + pop$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ pop$ + } + { swap$ + pop$ + } + if$ + } + if$ +} +FUNCTION {bibinfo.warn} +{ swap$ + duplicate$ missing$ + { + swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ "empty " swap$ * " in " * cite$ * warning$ + } + { swap$ + pop$ + } + if$ + } + if$ +} +STRINGS { bibinfo} +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}{, f{.}.}{, jj}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " " * bbl.etal emphasize * + } + { + "\&" + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.names.ed} +{ + 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{f{.}.~}{vv~}{ll}{ jj}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + + " " * bbl.etal emphasize * + } + { + "\&" + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.authors} +{ author "author" format.names scapify +} +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {format.editors} +{ editor "editor" format.names scapify duplicate$ empty$ 'skip$ + { + "," * + " " * + get.bbl.editor + * + } + if$ +} +FUNCTION {format.note} +{ + note empty$ + { "" } + { note #1 #1 substring$ + duplicate$ "{" = + 'skip$ + { output.state mid.sentence = + { "l" } + { "u" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + } + if$ +} + +FUNCTION {format.title} +{ title + duplicate$ empty$ 'skip$ + { "t" change.case$ } + if$ + "title" bibinfo.check +} +FUNCTION {format.full.names} +{'s := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}" format.name$ + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " " * bbl.etal emphasize * + } + { + "\&" + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.key.full} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.key.full} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {editor.key.full} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.full + { type$ "proceedings" = + 'editor.key.full + 'author.key.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[{" write$ + label write$ + ")" make.full.names duplicate$ short.list = + { pop$ } + { * } + if$ + "}]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {n.dashify} +{ + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {word.in} +{ bbl.in capitalize + " " * } + +FUNCTION {format.date} +{ year "year" bibinfo.check duplicate$ empty$ + { + "empty year in " cite$ * "; set to ????" * warning$ + pop$ "????" + } + 'skip$ + if$ + extra.label * + before.all 'output.state := + " (" swap$ * ")" * +} +FUNCTION {format.btitle} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { + emphasize + } + if$ +} +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { bbl.volume volume tie.or.space.prefix + "volume" bibinfo.check * * + series "series" bibinfo.check + duplicate$ empty$ 'pop$ + { swap$ bbl.of space.word * swap$ + emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { series empty$ + { number "number" bibinfo.check } + { output.state mid.sentence = + { bbl.number } + { bbl.number capitalize } + if$ + number tie.or.space.prefix "number" bibinfo.check * * + bbl.in space.word * + series "series" bibinfo.check * + } + if$ + } + if$ + } + { "" } + if$ +} +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +FUNCTION {convert.edition} +{ extract.num "l" change.case$ 's := + s "first" = s "1" = or + { bbl.first 't := } + { s "second" = s "2" = or + { bbl.second 't := } + { s "third" = s "3" = or + { bbl.third 't := } + { s "fourth" = s "4" = or + { bbl.fourth 't := } + { s "fifth" = s "5" = or + { bbl.fifth 't := } + { s #1 #1 substring$ is.num + { s eng.ord 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { + convert.edition + output.state mid.sentence = + { "l" } + { "t" } + if$ change.case$ + "edition" bibinfo.check + " " * bbl.edition * + } + if$ +} +INTEGERS { multiresult } +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { duplicate$ multi.page.check + { + n.dashify + } + { + } + if$ + "pages" bibinfo.check + } + if$ +} +FUNCTION {format.journal.pages} +{ pages duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ + { pop$ pop$ format.pages } + { + ", " * + swap$ + n.dashify + "pages" bibinfo.check + * + } + if$ + } + if$ +} +FUNCTION {format.vol.num.pages} +{ volume field.or.null + duplicate$ empty$ 'skip$ + { + "volume" bibinfo.check + } + if$ + bolden + format.journal.pages +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.booktitle} +{ + booktitle "booktitle" bibinfo.check + emphasize +} +FUNCTION {format.in.ed.booktitle} +{ format.booktitle duplicate$ empty$ 'skip$ + { + editor "editor" format.names.ed duplicate$ empty$ 'pop$ + { + "," * + " " * + get.bbl.editor + ", " * + * swap$ + * } + if$ + word.in swap$ * + } + if$ +} +FUNCTION {format.thesis.type} +{ type duplicate$ empty$ + 'pop$ + { swap$ pop$ + "t" change.case$ "type" bibinfo.check + } + if$ +} +FUNCTION {format.tr.number} +{ number "number" bibinfo.check + type duplicate$ empty$ + { pop$ bbl.techrep } + 'skip$ + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ "t" change.case$ } + { tie.or.space.prefix * * } + if$ +} +FUNCTION {format.article.crossref} +{ + word.in + " \cite{" * crossref * "}" * +} +FUNCTION {format.book.crossref} +{ volume duplicate$ empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + pop$ word.in + } + { bbl.volume + capitalize + swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * + } + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.incoll.inproc.crossref} +{ + word.in + " \cite{" * crossref * "}" * +} +FUNCTION {format.org.or.pub} +{ 't := + "" + address empty$ t empty$ and + 'skip$ + { + t empty$ + { address "address" bibinfo.check * + } + { t * + address empty$ + 'skip$ + { ", " * address "address" bibinfo.check * } + if$ + } + if$ + } + if$ +} +FUNCTION {format.publisher.address} +{ publisher "publisher" bibinfo.warn format.org.or.pub +} + +FUNCTION {format.organization.address} +{ organization "organization" bibinfo.check format.org.or.pub +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + new.sentence + crossref missing$ + { + journal + "journal" bibinfo.check + emphasize + "journal" output.check + format.vol.num.pages output + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + format.note output + fin.entry +} +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.date "year" output.check + date.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.sentence + format.number.series output + format.publisher.address output + } + { + new.sentence + format.book.crossref output.nonnull + } + if$ + format.edition output + format.note output + fin.entry +} +FUNCTION {booklet} +{ output.bibitem + format.authors output + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + new.sentence + howpublished "howpublished" bibinfo.check output + address "address" bibinfo.check output + format.note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.date "year" output.check + date.block + format.btitle "title" output.check + crossref missing$ + { + format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.sentence + format.number.series output + format.publisher.address output + } + { + format.chapter.pages "chapter and pages" output.check + new.sentence + format.book.crossref output.nonnull + } + if$ + format.edition output + format.note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + new.sentence + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + format.publisher.address output + format.edition output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + format.note output + fin.entry +} +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + new.sentence + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + format.note output + fin.entry +} +FUNCTION {conference} { inproceedings } +FUNCTION {manual} +{ output.bibitem + format.authors output + author format.key output + format.date "year" output.check + date.block + format.btitle "title" output.check + new.sentence + organization "organization" bibinfo.check output + address "address" bibinfo.check output + format.edition output + format.note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.btitle + "title" output.check + new.sentence + bbl.mthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + author format.key output + format.date "year" output.check + date.block + format.title output + new.sentence + howpublished "howpublished" bibinfo.check output + format.note output + fin.entry +} +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.btitle + "title" output.check + new.sentence + bbl.phdthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + format.editors output + editor format.key output + format.date "year" output.check + date.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + format.note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.title + "title" output.check + new.sentence + format.tr.number output.nonnull + institution "institution" bibinfo.warn output + address "address" bibinfo.check output + format.note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + author format.key output + format.date "year" output.check + date.block + format.title "title" output.check + format.note "note" output.check + fin.entry +} + +FUNCTION {default.type} { misc } +READ +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} +INTEGERS { len } +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} +FUNCTION {format.lab.names} +{ 's := + "" 't := + s #1 "{vv~}{ll}" format.name$ + s num.names$ duplicate$ + #2 > + { pop$ + " " * bbl.etal emphasize * + } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { + " " * bbl.etal emphasize * + } + { " \& " * s #2 "{vv~}{ll}" format.name$ + * } + if$ + } + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.label} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'short.list := +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list + "(" + * + year duplicate$ empty$ + short.list key field.or.null = or + { pop$ "" } + 'skip$ + if$ + * + 'label := +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" + format.name$ 't := + nameptr #1 > + { + " " * + namesleft #1 = t "others" = and + { "zzzzz" * } + { numnames #2 > nameptr #2 = and + { "zz" * year field.or.null * " " * } + 'skip$ + if$ + t sortify * + } + if$ + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {editor.sort} +{ editor empty$ + { key empty$ + { "to sort, need editor or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ +} +FUNCTION {presort} +{ calc.label + label sortify + " " + * + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.sort + 'author.sort + if$ + } + if$ + #1 entry.max$ substring$ + 'sort.label := + sort.label + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} +SORT +STRINGS { last.label next.extra } +INTEGERS { last.extra.num number.label } +FUNCTION {initialize.extra.label.stuff} +{ #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'last.extra.num := + #0 'number.label := +} +FUNCTION {forward.pass} +{ last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ + number.label #1 + 'number.label := +} +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := + label extra.label * 'label := +} +EXECUTE {initialize.extra.label.stuff} +ITERATE {forward.pass} +REVERSE {reverse.pass} +FUNCTION {bib.sort.order} +{ sort.label + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} +ITERATE {bib.sort.order} +SORT +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi" + write$ newline$ +} +EXECUTE {begin.bib} +EXECUTE {init.state.consts} +ITERATE {call.type$} +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} +EXECUTE {end.bib} +%% End of customized bst file +%% +%% End of file `jmb.bst'. diff --git a/vu-cs-standard-thesis/Latex/Classes/urlbst b/vu-cs-standard-thesis/Latex/Classes/urlbst new file mode 100644 index 0000000..3f83260 --- /dev/null +++ b/vu-cs-standard-thesis/Latex/Classes/urlbst @@ -0,0 +1,676 @@ +#! /usr/bin/env perl +# +# Usage: ./urlbst.pl [--eprint] [--doi] +# [--nohyperlinks] [--inlinelinks] [--hypertex] [--hyperref] +# [input-file [output-file]] +# If either input-file or output-file is omitted, they are replaced by +# stdin or stdout respectively. +# +# See http://purl.org/nxg/dist/urlbst for documentation +# +# $Id: urlbst.in,v 1.8 2007/03/26 17:21:56 norman Exp $ + +$version = '0.6'; +($progname = $0) =~ s/.*\///; +$mymarker = "% $progname"; +$mymarkerend = "% ...$progname to here"; +$myurl = 'http://purl.org/nxg/dist/urlbst'; + + +$infile = '-'; +$outfile = '-'; + +$addeprints = 0; # if true (nonzero) we add support for eprints +$eprintprefix = 'arXiv:'; # make these settable with --eprint? syntax? +$eprinturl = 'http://arxiv.org/abs/'; + +$adddoiresolver = '0'; +$doiprefix = 'doi:'; +$doiurl = 'http://dx.doi.org/'; + +$makehref = 0; +$availablestring = "Available from: "; +$inlinelinks = 0; + +$Usage = "$progname [--eprint] [--doi]\n [--nohyperlinks] [--inlinelinks] [--hypertex] [--hyperref]\n [--help] [input-file [output-file]]"; + +while ($#ARGV >= 0) { + if ($ARGV[0] eq '--eprint') { + $addeprints = 1; + } elsif ($ARGV[0] eq '--doi') { + $adddoiresolver = 1; + } elsif ($ARGV[0] eq '--nohyperlinks') { + $makehref = 0; + } elsif ($ARGV[0] eq '--hypertex') { + $makehref = 1; + } elsif ($ARGV[0] eq '--hyperref') { + $makehref = 2; + } elsif ($ARGV[0] eq '--inlinelinks') { + $inlinelinks = 1; + } elsif ($ARGV[0] eq '--help') { + print <$outfile") || die "Can't open $outfile to write"; + +# We have to make certain assumptions about the source files, in order +# to patch them at the correct places. Specifically, we assume that +# +# - there's a function init.state.consts +# +# - ...and an output.nonnull which does the actual outputting, which +# has the `usual' interface. +# +# - we can replace +# fin.entry +# by +# new.block +# output.url % the function which formats and displays any URL +# fin.entry +# +# - there is a function which handles the `article' entry type (this +# will always be true) +# +# - there is a function output.bibitem which is called at the +# beginning of each entry type +# - ...and one called fin.entry which is called at the end +# +# If the functions format.date, format.title or new.block are not defined (the +# former is not in apalike, for example, and the last is not in the +# AMS styles), then replacements are included in the output. +# +# All these assumptions are true of the standard files and, since most +# style files derive from them more or less directly, are true of most (?) +# other style files, too. +# +# There's some rather ugly Perl down here. The parsing for +# brace-matching could probably do with being rewritten in places, to +# make it less ugly, and more robust. + +print OUT "%%% Modification of BibTeX style file ", ($infile eq '-' ? '' : $infile), "\n"; +print OUT "%%% ... by $progname, version $version (marked with \"$mymarker\")\n%%% See <$myurl>\n"; +print OUT "%%% Added webpage entry type, and url and lastchecked fields.\n"; +print OUT "%%% Added eprint support.\n" if ($addeprints); +print OUT "%%% Added DOI support.\n" if ($adddoiresolver); +print OUT "%%% Added HyperTeX support.\n" if ($makehref == 1); +print OUT "%%% Added hyperref support.\n" if ($makehref == 2); +print OUT "%%% Original headers follow...\n\n"; + +$found{initconsts} = 0; +$found{outputnonnull} = 0; +$found{article} = 0; +$found{outputbibitem} = 0; +$found{finentry} = 0; +$found{formatdate} = 0; +$found{formattitle} = 0; +$found{newblock} = 0; + +while () { + /^ *%/ && do { + # Pass commented lines unchanged + print OUT; + next; + }; + + /^ *ENTRY/ && do { + # Work through the list of entry types, finding what ones are there. + # If we find a URL entry there already, object, since these edits + # will mess things up. + $line = $_; + until ($line =~ /\{\s*(\w*)/) { + $line .= ; + } + $bracematchtotal = 0; # reset + bracematcher($line); + $line =~ /\{\s*(\w*)/; + $found{'entry'.$1} = 1; + print OUT $line; + $line = ; + until (bracematcher($line) == 0) { + # XXX deal with multiple entries on one line + ($line =~ /^\s*(\w*)/) && ($found{'entry'.$1} = 1); + print OUT $line; + $line = ; + } + if (defined($found{entryurl})) { + print STDERR "$progname: style file $infile already has URL entry!\n"; + # print out the rest of the file, and give up + print OUT $line; + while () { + print OUT; + } + $exitstatus = 1; + last; + } else { + print OUT " eprint $mymarker\n doi $mymarker\n url $mymarker\n lastchecked $mymarker\n"; + } + print OUT $line; + next; + }; + + /^ *FUNCTION *\{init\.state\.consts\}/ && do { + # In the init.state.consts function, add an extra set of + # constants at the beginning. Also use this as the marker for + # the place to add the init strings function. + print OUT <; + } + $line =~ s/(\{.*?\}.*?\{)/$1 #0 'outside.brackets := $mymarker + #1 'open.brackets := + #2 'within.brackets := + #3 'close.brackets := + + /s; + print OUT $line; + $found{initconsts} = 1; + next; + }; + + /^ *EXECUTE *\{init\.state\.consts\}/ && do { + print OUT "EXECUTE {init.urlbst.variables}\n"; + print OUT; + next; + }; + + /^ *FUNCTION *\{new.block\}/ && do { + $found{newblock} = 1; + }; + + /^ *FUNCTION *{output\.nonnull}/ && do { + print OUT "$mymarker\n"; + print OUT "FUNCTION {output.nonnull.original}\n"; + copy_block(); + print_output_functions(); + $found{outputnonnull} = 1; + next; + }; + + /FUNCTION *\{fin.entry\}/ && do { + # Rename fin.entry to fin.entry.original (wrapped below) + s/fin.entry/fin.entry.original/; + $found{finentry} = 1; + print OUT; + next; + }; + + /^ *FUNCTION *{format\.date}/ && do { + $found{formatdate} = 1; + print OUT; + next; + }; + + /^ *FUNCTION *{format\.title}/ && do { + # record that we found this + $found{formattitle} = 1; + print OUT; + next; + }; + + /^ *format\.b?title/ && do { + # interpolate a call to setup.inlinelink + print OUT " title empty\$ 'skip\$ 'setup\.inlinelink if\$ $mymarker\n"; + print OUT; + next; + }; + + /^ *FUNCTION *\{article\}/ && do { + + print_missing_functions(); + print_webpage_def(); + + print OUT; + $found{article} = 1; + next; + }; + + /FUNCTION *\{output.bibitem\}/ && do { + # Rename output.bibitem to output.bibitem.original (wrapped below) + s/{output.bibitem\}/\{output.bibitem.original\}/; + $found{outputbibitem} = 1; + print OUT; + next; + }; + + print OUT; +}; + +if ($exitstatus == 0) { + # Skip this if we've already reported an error -- it'll only be confusing + foreach $k (keys %found) { + if ($found{$k} == 0) { + print STDERR "$progname: $infile: failed to find feature $k\n"; + } + } +} + +close (IN); +close (OUT); + +exit $exitstatus;; + + + + + + +sub print_output_functions { + print OUT "$mymarker...\n"; + + print OUT <<'EOD'; +% The following three functions are for handling inlinelink. They wrap +% a block of text which is potentially output with write$ by multiple +% other functions, so we don't know the content a priori. +% They communicate between each other using the variables makeinlinelink +% (which is true if a link should be made), and closeinlinelink (which holds +% the string which should close any current link. They can be called +% at any time, but start.inlinelink will be a no-op unless something has +% previously set makeinlinelink true, and the two ...end.inlinelink functions +% will only do their stuff if start.inlinelink has previously set +% closeinlinelink to be non-empty. +FUNCTION {setup.inlinelink} +{ makeinlinelink + { hrefform #1 = % hypertex + { "\special {html: }{" * 'openinlinelink := + "\special {html:}" 'closeinlinelink := + } + { hrefform #2 = % hyperref + { "\href{" url * "}{" * 'openinlinelink := + "}" 'closeinlinelink := + } + 'skip$ + if$ % hrefform #2 = + } + if$ % hrefform #1 = + #0 'makeinlinelink := + } + 'skip$ + if$ % makeinlinelink +} +FUNCTION {add.inlinelink} +{ openinlinelink empty$ + 'skip$ + { openinlinelink swap$ * closeinlinelink * + "" 'openinlinelink := + } + if$ +} +EOD + + # new.block is defined elsewhere + + print OUT <<'EOD'; +FUNCTION {output.nonnull} +{ % Save the thing we've been asked to output + 's := + % If the bracket-state is close.brackets, then add a close-bracket to + % what is currently at the top of the stack, and set bracket.state + % to outside.brackets + bracket.state close.brackets = + { "]" * + outside.brackets 'bracket.state := + } + 'skip$ + if$ + bracket.state outside.brackets = + { % We're outside all brackets -- this is the normal situation. + % Write out what's currently at the top of the stack, using the + % original output.nonnull function. + s + add.inlinelink + output.nonnull.original % invoke the original output.nonnull + } + { % Still in brackets. Add open-bracket or (continuation) comma, add the + % new text (in s) to the top of the stack, and move to the close-brackets + % state, ready for next time (unless inbrackets resets it). If we come + % into this branch, then output.state is carefully undisturbed. + bracket.state open.brackets = + { " [" * } + { ", " * } % bracket.state will be within.brackets + if$ + s * + close.brackets 'bracket.state := + } + if$ +} + +% Call this function just before adding something which should be presented in +% brackets. bracket.state is handled specially within output.nonnull. +FUNCTION {inbrackets} +{ bracket.state close.brackets = + { within.brackets 'bracket.state := } % reset the state: not open nor closed + { open.brackets 'bracket.state := } + if$ +} + +FUNCTION {format.lastchecked} +{ lastchecked empty$ + { "" } + { inbrackets "cited " lastchecked * } + if$ +} +EOD + print OUT "$mymarkerend\n"; +} + +sub print_webpage_def { + print OUT "$mymarker...\n"; + + # Some of the functions below call new.block, so we need a dummy + # version, in the case where the style being edited doesn't supply + # that function. + if (! $found{newblock}) { + print OUT "FUNCTION {new.block} % dummy new.block function\n{\n % empty\n}\n\n"; + $found{newblock} = 1; + } + + print OUT <<'EOD'; +% Functions for making hypertext links. +% In all cases, the stack has (link-text href-url) +% +% make 'null' specials +FUNCTION {make.href.null} +{ + pop$ +} +% make hypertex specials +FUNCTION {make.href.hypertex} +{ + "\special {html: }" * swap$ * + "\special {html:}" * +} +% make hyperref specials +FUNCTION {make.href.hyperref} +{ + "\href {" swap$ * "} {\path{" * swap$ * "}}" * +} +FUNCTION {make.href} +{ hrefform #2 = + 'make.href.hyperref % hrefform = 2 + { hrefform #1 = + 'make.href.hypertex % hrefform = 1 + 'make.href.null % hrefform = 0 (or anything else) + if$ + } + if$ +} + +% If inlinelinks is true, then format.url should be a no-op, since it's +% (a) redundant, and (b) could end up as a link-within-a-link. +FUNCTION {format.url} +{ inlinelinks #1 = url empty$ or + { "" } + { hrefform #1 = + { % special case -- add HyperTeX specials + urlintro "\url{" url * "}" * url make.href.hypertex * } + { urlintro "\url{" * url * "}" * } + if$ + } + if$ +} + +FUNCTION {format.eprint} +{ eprint empty$ + { "" } + { eprintprefix eprint * eprinturl eprint * make.href } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ + { "" } + { doiprefix doi * doiurl doi * make.href } + if$ +} + +% Output a URL. We can't use the more normal idiom (something like +% `format.url output'), because the `inbrackets' within +% format.lastchecked applies to everything between calls to `output', +% so that `format.url format.lastchecked * output' ends up with both +% the URL and the lastchecked in brackets. +FUNCTION {output.url} +{ url empty$ + 'skip$ + { new.block + format.url output + format.lastchecked output + } + if$ +} + +FUNCTION {output.web.refs} +{ + new.block + output.url + addeprints eprint empty$ not and + { format.eprint output.nonnull } + 'skip$ + if$ + adddoiresolver doi empty$ not and + { format.doi output.nonnull } + 'skip$ + if$ +} + +% Wrapper for output.bibitem.original. +% If the URL field is not empty, set makeinlinelink to be true, +% so that an inline link will be started at the next opportunity +FUNCTION {output.bibitem} +{ outside.brackets 'bracket.state := + output.bibitem.original + inlinelinks url empty$ not and + { #1 'makeinlinelink := } + { #0 'makeinlinelink := } + if$ +} + +% Wrapper for fin.entry.original +FUNCTION {fin.entry} +{ output.web.refs % urlbst + makeinlinelink % ooops, it appears we didn't have a title for inlinelink + { setup.inlinelink % add some artificial link text here, as a fallback + "[link]" output.nonnull } + 'skip$ + if$ + bracket.state close.brackets = % urlbst + { "]" * } + 'skip$ + if$ + fin.entry.original +} + +% Webpage entry type. +% Title and url fields required; +% author, note, year, month, and lastchecked fields optional +% See references +% ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm +% http://www.classroom.net/classroom/CitingNetResources.html +% http://neal.ctstateu.edu/history/cite.html +% http://www.cas.usf.edu/english/walker/mla.html +% for citation formats for web pages. +FUNCTION {webpage} +{ output.bibitem + author empty$ + { editor empty$ + 'skip$ % author and editor both optional + { format.editors output.nonnull } + if$ + } + { editor empty$ + { format.authors output.nonnull } + { "can't use both author and editor fields in " cite$ * warning$ } + if$ + } + if$ + new.block + title empty$ 'skip$ 'setup.inlinelink if$ + format.title "title" output.check + inbrackets "online" output + new.block + year empty$ + 'skip$ + { format.date "year" output.check } + if$ + % We don't need to output the URL details ('lastchecked' and 'url'), + % because fin.entry does that for us, using output.web.refs. The only + % reason we would want to put them here is if we were to decide that + % they should go in front of the rather miscellaneous information in 'note'. + new.block + note output + fin.entry +} +EOD + + print OUT "$mymarkerend\n\n\n"; +} + + +sub print_missing_functions { + # We've got to the bit of the file which handles the entry + # types, so write out the webpage entry handler. This uses + # the format.date function, which which many but not all + # bst files have (for example, apalike doesn't). So + # check that we either have found this function already, or + # add it. + if (! $found{formatdate}) { + if ($found{entrymonth}) { + print OUT <<'EOD'; +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} +EOD + } else { + print OUT <<'EOD'; +FUNCTION {format.date} +{ year empty$ + 'skip$ + { %write$ + "(" year * ")" * + } + if$ +} +EOD + } + $found{formatdate} = 1; + } + + # If the style file didn't supply a format.title function, then supply + # one here (the {webpage} function requires it). + if (! $found{formattitle}) { + print OUT <<'EOD'; +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} +EOD + $found{formattitle} = 1; + } +} + +# Utility function: Keep track of open and close braces in the string argument. +# Keep state in $bracematchtotal, return the current value. +sub bracematcher { + my $s = shift; + $s =~ s/[^\{\}]//g; + #print "s=$s\n"; + foreach my $c (split (//, $s)) { + $bracematchtotal += ($c eq '{' ? 1 : -1); + } + return $bracematchtotal; +} + +# Utility function: use bracematcher to copy the complete block which starts +# on or after the current line. +sub copy_block { + $bracematchtotal = 0; + # copy any leading lines which don't have braces (presumably comments) + while (defined ($line = ) && ($line !~ /{/)) { + print OUT $line; + } + while (defined ($line) && bracematcher($line) > 0) { + print OUT $line; + $line = ; + } + print OUT "$line\n"; # print out terminating \} (assumed + # alone on the line) +} diff --git "a/vu-cs-standard-thesis/Latex/Icon\342\231\252" "b/vu-cs-standard-thesis/Latex/Icon\342\231\252" new file mode 100644 index 0000000..e69de29 diff --git "a/vu-cs-standard-thesis/Latex/Macros/Icon\342\231\252" "b/vu-cs-standard-thesis/Latex/Macros/Icon\342\231\252" new file mode 100644 index 0000000..e69de29 diff --git a/vu-cs-standard-thesis/Latex/Macros/MacroFile1.tex b/vu-cs-standard-thesis/Latex/Macros/MacroFile1.tex new file mode 100644 index 0000000..09d9fe1 --- /dev/null +++ b/vu-cs-standard-thesis/Latex/Macros/MacroFile1.tex @@ -0,0 +1,73 @@ +% This file contains macros that can be called up from connected TeX files +% It helps to summarise repeated code, e.g. figure insertion (see below). + +% insert a centered figure with caption and description +% parameters 1:filename, 2:title, 3:description and label +\newcommand{\figuremacro}[3]{ + \begin{figure}[htbp] + \centering + \includegraphics[width=1\textwidth]{#1} + \caption[#2]{\textbf{#2} - #3} + \label{#1} + \end{figure} +} + +% insert a centered figure with caption and description AND WIDTH +% parameters 1:filename, 2:title, 3:description and label, 4: textwidth +% textwidth 1 means as text, 0.5 means half the width of the text +\newcommand{\figuremacroW}[4]{ + \begin{figure}[htbp] + \centering + \includegraphics[width=#4\textwidth]{#1} + \caption[#2]{\textbf{#2} - #3} + \label{#1} + \end{figure} +} + +% inserts a figure with wrapped around text; only suitable for NARROW figs +% o is for outside on a double paged document; others: l, r, i(inside) +% text and figure will each be half of the document width +% note: long captions often crash with adjacent content; take care +% in general: above 2 macro produce more reliable layout +\newcommand{\figuremacroN}[3]{ + \begin{wrapfigure}{o}{0.5\textwidth} + \centering + \includegraphics[width=0.48\textwidth]{#1} + \caption[#2]{{\small\textbf{#2} - #3}} + \label{#1} + \end{wrapfigure} +} + +% predefined commands by Harish +\newcommand{\PdfPsText}[2]{ + \ifpdf + #1 + \else + #2 + \fi +} + +\newcommand{\IncludeGraphicsH}[3]{ + \PdfPsText{\includegraphics[height=#2]{#1}}{\includegraphics[bb = #3, height=#2]{#1}} +} + +\newcommand{\IncludeGraphicsW}[3]{ + \PdfPsText{\includegraphics[width=#2]{#1}}{\includegraphics[bb = #3, width=#2]{#1}} +} + +\newcommand{\InsertFig}[3]{ + \begin{figure}[!htbp] + \begin{center} + \leavevmode + #1 + \caption{#2} + \label{#3} + \end{center} + \end{figure} +} + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "~/Documents/LaTeX/CUEDThesisPSnPDF/thesis" +%%% End: diff --git "a/vu-cs-standard-thesis/Latex/StyleFiles/Icon\342\231\252" "b/vu-cs-standard-thesis/Latex/StyleFiles/Icon\342\231\252" new file mode 100644 index 0000000..e69de29 diff --git a/vu-cs-standard-thesis/Latex/StyleFiles/watermark.sty b/vu-cs-standard-thesis/Latex/StyleFiles/watermark.sty new file mode 100644 index 0000000..4971307 --- /dev/null +++ b/vu-cs-standard-thesis/Latex/StyleFiles/watermark.sty @@ -0,0 +1,87 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{watermark} + [2002/01/29 v1.00 Watermarks (NCC)] +% +% The package provides watermarks on output pages. A watermark is +% some text or picture printed at the background of paper. A watermark +% is prepared in picture box stored at the beginning of running head. +% So, the watermark material must be put on the page with LaTeX's \put and +% \multiput commands. +% +% \watermark{BODY} sets a watermark to be printed on all pages +% \leftwatermark{BODY} sets a watermark to be printed on every even page +% if twoside mode is turned on. Otherwise, this +% watermark is ignored. Odd-page watermark +% leaves unchanged. +% \rightwatermark{BODY} sets a watermark to be printed on every odd page +% if twoside mode is turned on. Otherwise, this +% watermark is printed on all pages. Even-page +% watermark leaves unchanged. +% \thiswatermark{BODY} sets a watermark for the current page only. +% +% Additionally, the package provides the command \thispageheading{HEADING} +% which replaces a heading for the current page to specified heading. +% Watermarks are also printed when a heading is replaced. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% We use the \@begindvi hook from the output routine. +% This hook works only once at the beginning of dvi, but some packages +% (e.g. hyperref) also use it for their own needs. +% So, we redefine it at the beginning of document in such a way to +% accurately save its behaviour after the first call when it can be +% redefined by other packages. +% +\AtBeginDocument{ + \let\WMK@begindvi\@begindvi + \def\@begindvi{\WMK@begindvi \WMK@insert + \global\let\WMK@begindvi\@begindvi % Save redefined behaviour and + \gdef\@begindvi{\WMK@begindvi\WMK@insert}% redefine \@begindvi once more + }% +} +% +% The \WMK@insert command redefines current header and inserts the +% \WMK@hook at the beginning of header. A box produced by this hook +% has zero natural sizes. +% +\def\WMK@insert{\let\WMK@head\@thehead \def\@thehead{\WMK@hook\WMK@head}} +\def\WMK@hook{% + \begin{picture}(0,0)\relax + \ifx\WMK@this\relax + \if@twoside + \ifodd\c@page\WMK@odd\else\WMK@even\fi + \else + \WMK@odd + \fi + \else + \WMK@this \global\let\WMK@this\relax + \fi + \end{picture}% +} +% +% Define watermark producing commands +% +\newcommand{\watermark}[1]{\leftwatermark{#1}\rightwatermark{#1}} +\newcommand{\leftwatermark}[1]{\long\gdef\WMK@even{#1}} +\newcommand{\rightwatermark}[1]{\long\gdef\WMK@odd{#1}} +\newcommand{\thiswatermark}[1]{\long\gdef\WMK@this{#1}} +\watermark{} +\let\WMK@this\relax +% +% Now we define \thispageheading{heading} command. +% It replaces a heading on the current page to the +% specified one and prepares it in \parbox. Watermarks are leaved unchanged. +% The \ifWMK@savehead is needed to protect from multiple use of this command +% on the same page. +% +\newif\ifWMK@savehead \WMK@saveheadfalse +\newcommand{\thispageheading}[1]{% + \ifWMK@savehead \else + \global\WMK@saveheadtrue \global\let\WMK@savehook\WMK@hook + \fi + \long\gdef\WMK@hook{\WMK@savehook + \parbox[t]\textwidth{#1}\let\WMK@head\@empty + \global\WMK@saveheadfalse \global\let\WMK@hook\WMK@savehook + }% +} +\endinput diff --git a/vu-cs-standard-thesis/Latex/latex_intro.pdf b/vu-cs-standard-thesis/Latex/latex_intro.pdf new file mode 100644 index 0000000..82027c5 Binary files /dev/null and b/vu-cs-standard-thesis/Latex/latex_intro.pdf differ diff --git a/vu-cs-standard-thesis/booktabs.sty b/vu-cs-standard-thesis/booktabs.sty new file mode 100644 index 0000000..cf25d78 --- /dev/null +++ b/vu-cs-standard-thesis/booktabs.sty @@ -0,0 +1,182 @@ +%% +%% This is file `booktabs.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% booktabs.dtx (with options: `package') +%% +%% ----------------------------------------------------------------- +%% Author: Simon Fear +%% Maintainer: Danie Els (dnjels@sun.ac.za) +%% +%% This file is part of the booktabs package for publication +%% quality tables for LaTeX +%% +%% Copyright (C) 1995--2005 Simon Fear +%% +%% This program is free software; you can redistribute it and/or +%% modify it under the terms of the GNU General Public License as +%% published by the Free Software Foundation; either version 2 of +%% the License, or (at your option) any later version. +%% +%% This program is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +%% GNU General Public License for more details. +%% +%% You should have received a copy of the GNU General Public +%% License along with this program; if not, write to the Free +%% Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, +%% MA 02111-1307 USA +%% ----------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{booktabs} + [2005/04/14 v1.61803 publication quality tables] +\newdimen\heavyrulewidth +\newdimen\lightrulewidth +\newdimen\cmidrulewidth +\newdimen\belowrulesep +\newdimen\belowbottomsep +\newdimen\aboverulesep +\newdimen\abovetopsep +\newdimen\cmidrulesep +\newdimen\cmidrulekern +\newdimen\defaultaddspace +\heavyrulewidth=.08em +\lightrulewidth=.05em +\cmidrulewidth=.03em +\belowrulesep=.65ex +\belowbottomsep=0pt +\aboverulesep=.4ex +\abovetopsep=0pt +\cmidrulesep=\doublerulesep +\cmidrulekern=.5em +\defaultaddspace=.5em +\newcount\@cmidla +\newcount\@cmidlb +\newdimen\@aboverulesep +\newdimen\@belowrulesep +\newcount\@thisruleclass +\newcount\@lastruleclass +\@lastruleclass=0 +\newdimen\@thisrulewidth +\def\futurenonspacelet#1{\def\@BTcs{#1}% + \afterassignment\@BTfnslone\let\nexttoken= } +\def\@BTfnslone{\expandafter\futurelet\@BTcs\@BTfnsltwo} +\def\@BTfnsltwo{\expandafter\ifx\@BTcs\@sptoken\let\next=\@BTfnslthree + \else\let\next=\nexttoken\fi \next} +\def\@BTfnslthree{\afterassignment\@BTfnslone\let\next= } +\def\toprule{\noalign{\ifnum0=`}\fi + \@aboverulesep=\abovetopsep + \global\@belowrulesep=\belowrulesep %global cos for use in the next noalign + \global\@thisruleclass=\@ne + \@ifnextchar[{\@BTrule}{\@BTrule[\heavyrulewidth]}} +\def\midrule{\noalign{\ifnum0=`}\fi + \@aboverulesep=\aboverulesep + \global\@belowrulesep=\belowrulesep + \global\@thisruleclass=\@ne + \@ifnextchar[{\@BTrule}{\@BTrule[\lightrulewidth]}} +\def\bottomrule{\noalign{\ifnum0=`}\fi + \@aboverulesep=\aboverulesep + \global\@belowrulesep=\belowbottomsep + \global\@thisruleclass=\@ne + \@ifnextchar[{\@BTrule}{\@BTrule[\heavyrulewidth]}} +\def\specialrule#1#2#3{\noalign{\ifnum0=`}\fi + \@aboverulesep=#2\global\@belowrulesep=#3\global\@thisruleclass=\tw@ + \@BTrule[#1]} +\def\addlinespace{\noalign{\ifnum0=`}\fi + \@ifnextchar[{\@addspace}{\@addspace[\defaultaddspace]}} +\def\@addspace[#1]{\global\@belowrulesep=#1\global\@thisruleclass=\tw@ + \futurelet\@tempa\@BTendrule} +\def\@BTrule[#1]{% + \global\@thisrulewidth=#1\relax + \ifnum\@thisruleclass=\tw@\vskip\@aboverulesep\else + \ifnum\@lastruleclass=\z@\vskip\@aboverulesep\else + \ifnum\@lastruleclass=\@ne\vskip\doublerulesep\fi\fi\fi + \ifx\longtable\undefined + \let\@BTswitch\@BTnormal + \else\ifx\hline\LT@hline + \let\@BTswitch\@BLTrule + \else + \let\@BTswitch\@BTnormal + \fi\fi + \@BTswitch} +\AtBeginDocument{% + \providecommand*\CT@arc@{}}%% colortbl support +\def\@BTnormal{% + {\CT@arc@\hrule\@height\@thisrulewidth}% + \futurenonspacelet\@tempa\@BTendrule} +\def\@BLTrule{\@ifnextchar({\@@BLTrule}{\@@BLTrule()}} +\def\@@BLTrule(#1){\@setrulekerning{#1}% +\global\@cmidlb\LT@cols +\ifnum0=`{\fi}% +\@cmidruleb +\noalign{\ifnum0=`}\fi +\futurenonspacelet\@tempa\@BTendrule} +\def\@BTendrule{\ifx\@tempa\toprule\global\@lastruleclass=\@thisruleclass + \else\ifx\@tempa\midrule\global\@lastruleclass=\@thisruleclass + \else\ifx\@tempa\bottomrule\global\@lastruleclass=\@thisruleclass + \else\ifx\@tempa\cmidrule\global\@lastruleclass=\@thisruleclass + \else\ifx\@tempa\specialrule\global\@lastruleclass=\@thisruleclass + \else\ifx\@tempa\addlinespace\global\@lastruleclass=\@thisruleclass + \else\global\@lastruleclass=\z@\fi\fi\fi\fi\fi\fi + \ifnum\@lastruleclass=\@ne\relax\else\vskip\@belowrulesep\fi + \ifnum0=`{\fi}} +\def\@setrulekerning#1{% + \global\let\cmrkern@l\z@ + \global\let\cmrkern@r\z@ + \@tfor\@tempa :=#1\do + {\def\@tempb{r}% + \ifx\@tempa\@tempb + \global\let\cmrkern@r\cmidrulekern + \def\cmrsideswitch{\cmrkern@r}% + \else + \def\@tempb{l}% + \ifx\@tempa\@tempb + \global\let\cmrkern@l\cmidrulekern + \def\cmrsideswitch{\cmrkern@l}% + \else + \global\expandafter\let\cmrsideswitch\@tempa + \fi + \fi}} +\def\cmidrule{\noalign{\ifnum0=`}\fi + \@ifnextchar[{\@cmidrule}{\@cmidrule[\cmidrulewidth]}} +\def\@cmidrule[#1]{\@ifnextchar({\@@cmidrule[#1]}{\@@cmidrule[#1]()}} +\def\@@cmidrule[#1](#2)#3{\@@@cmidrule[#3]{#1}{#2}} +\def\@@@cmidrule[#1-#2]#3#4{\global\@cmidla#1\relax + \global\advance\@cmidla\m@ne + \ifnum\@cmidla>0\global\let\@gtempa\@cmidrulea\else + \global\let\@gtempa\@cmidruleb\fi + \global\@cmidlb#2\relax + \global\advance\@cmidlb-\@cmidla + \global\@thisrulewidth=#3 + \@setrulekerning{#4} + \ifnum\@lastruleclass=\z@\vskip \aboverulesep\fi + \ifnum0=`{\fi}\@gtempa + \noalign{\ifnum0=`}\fi\futurenonspacelet\@tempa\@xcmidrule} +\def\@xcmidrule{% + \ifx\@tempa\cmidrule + \vskip-\@thisrulewidth + \global\@lastruleclass=\@ne + \else \ifx\@tempa\morecmidrules + \vskip \cmidrulesep + \global\@lastruleclass=\@ne\else + \vskip \belowrulesep + \global\@lastruleclass=\z@ + \fi\fi + \ifnum0=`{\fi}} +\def\@cmidrulea{% + \multispan\@cmidla&\multispan\@cmidlb + \unskip\hskip\cmrkern@l% + {\CT@arc@\leaders\hrule \@height\@thisrulewidth\hfill}% + \hskip\cmrkern@r\cr}% +\def\@cmidruleb{% + \multispan\@cmidlb + \unskip\hskip \cmrkern@l% + {\CT@arc@\leaders\hrule \@height\@thisrulewidth\hfill}% + \hskip\cmrkern@r\cr}% +\def\morecmidrules{\noalign{\relax}} +\endinput +%% +%% End of file `booktabs.sty'. diff --git a/vu-cs-standard-thesis/caption.sty b/vu-cs-standard-thesis/caption.sty new file mode 100644 index 0000000..afaf92d --- /dev/null +++ b/vu-cs-standard-thesis/caption.sty @@ -0,0 +1,693 @@ +%% +%% This is file `caption.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% caption.dtx (with options: `package') +%% +%% Copyright (C) 1994-2004 Axel Sommerfeldt (caption@sommerfeldt.net) +%% +%% -------------------------------------------------------------------------- +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2003/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Axel Sommerfeldt. +%% +%% This work consists of the files caption.ins, caption.dtx, +%% caption2.dtx, caption.xml, and anleitung.tex and the derived files +%% caption.sty, caption2.sty, and manual.tex. +%% +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +\ProvidesPackage{caption}[2004/05/16 v3.0b Customising captions (AS)] +\providecommand*\@nameundef[1]{% + \expandafter\let\csname #1\endcsname\@undefined} +\providecommand\l@addto@macro[2]{% + \begingroup + \toks@\expandafter{#1#2}% + \edef\@tempa{\endgroup\def\noexpand#1{\the\toks@}}% + \@tempa} +\def\bothIfFirst#1#2{% + \protected@edef\caption@tempa{#1}% + \ifx\caption@tempa\@empty\else + #1#2% + \fi} +\def\bothIfSecond#1#2{% + \protected@edef\caption@tempa{#2}% + \ifx\caption@tempa\@empty\else + #1#2% + \fi} +\def\caption@ifinlist#1#2{% + \let\next\@secondoftwo + \edef\caption@tempa{#1}% + \@for\caption@tempb:={#2}\do{% + \ifx\caption@tempa\caption@tempb + \let\next\@firstoftwo + \fi}% + \next} +\def\caption@setbool#1#2{% + \caption@ifinlist{#2}{1,true,yes,on}{% + \expandafter\let\csname caption@if#1\endcsname\@firstoftwo + }{\caption@ifinlist{#2}{0,false,no,off}{% + \expandafter\let\csname caption@if#1\endcsname\@secondoftwo + }{% + \PackageError{caption}{Undefined boolean value `#2'}{\caption@eh}% + }}} +\def\caption@ifbool#1{\@nameuse{caption@if#1}} +\newcommand\captionsize{}% changed v3.0a +\newdimen\captionmargin +\newdimen\captionwidth +\newif\ifcaption@width +\newcommand\caption@setmargin{% + \caption@widthfalse + \setlength\captionmargin} +\newcommand\caption@setwidth{% + \caption@widthtrue + \setlength\captionwidth} +\newdimen\captionindent +\newdimen\captionparindent +\newdimen\captionhangindent +\newif\ifcaption@star +\@ifundefined{abovecaptionskip}{% + \newlength\abovecaptionskip\setlength\abovecaptionskip{10\p@}}{} +\@ifundefined{belowcaptionskip}{% + \newlength\belowcaptionskip\setlength\belowcaptionskip{0\p@}}{} +\newcommand\caption@eh{% + If you do not understand this error, please take a closer look\MessageBreak + at the documentation of the `caption' package.\MessageBreak + \@ehc} +\RequirePackage{keyval}[1997/11/10] +\providecommand*\undefine@key[2]{% + \@nameundef{KV@#1@#2}\@nameundef{KV@#1@#2@default}} +\newcommand\caption@setdefault{\captionsetup{% + format=default,labelformat=default,labelsep=default,justification=default,% + font=default,labelfont=default,textfont=default,% + margin=0pt,indention=0pt,parindent=0pt,hangindent=0pt,singlelinecheck}} +\newcommand*\DeclareCaptionStyle[1]{% + \@ifnextchar[{\caption@declarestyle{#1}}{\caption@declarestyle{#1}[]}} +\def\caption@declarestyle#1[#2]#3{% bugfixed v3.0a + \global\@namedef{caption@sls@#1}{#2}% + \global\@namedef{caption@sty@#1}{#3}} +\@onlypreamble\DeclareCaptionStyle +\@onlypreamble\caption@declarestyle +\newcommand*\caption@setstyle[1]{% + \@ifundefined{caption@sty@#1}% + {\PackageError{caption}{Undefined caption style `#1'}{\caption@eh}}% + {\expandafter\let\expandafter\caption@sls\csname caption@sls@#1\endcsname + \caption@setdefault\caption@esetup{\csname caption@sty@#1\endcsname}}} +\DeclareCaptionStyle{default}[justification=centering]{} +\newcommand\DeclareCaptionFormat[2]{% bugfixed v3.0a + \global\long\expandafter\def\csname caption@fmt@#1\endcsname##1##2##3{#2}} +\@onlypreamble\DeclareCaptionFormat +\newcommand*\caption@setformat[1]{% + \@ifundefined{caption@fmt@#1}% + {\PackageError{caption}{Undefined caption format `#1'}{\caption@eh}}% + {\expandafter\let\expandafter\caption@fmt\csname caption@fmt@#1\endcsname}} +\DeclareCaptionFormat{normal}{#1#2#3\par} +\DeclareCaptionFormat{hang}{% + \@hangfrom{#1#2}% + \advance\captionparindent\hangindent + \advance\captionhangindent\hangindent + \caption@@par + #3\par} +\def\caption@fmt@default{\caption@fmt@normal} +\newcommand*\DeclareCaptionLabelFormat[2]{% bugfixed v3.0a + \global\expandafter\def\csname caption@lfmt@#1\endcsname##1##2{#2}} +\@onlypreamble\DeclareCaptionLabelFormat +\newcommand*\caption@setlabelformat[1]{% + \@ifundefined{caption@lfmt@#1}% + {\PackageError{caption}{Undefined caption label format `#1'}{\caption@eh}}% + {\expandafter\let\expandafter\caption@lfmt\csname caption@lfmt@#1\endcsname}} +\DeclareCaptionLabelFormat{empty}{} +\DeclareCaptionLabelFormat{simple}{\bothIfFirst{#1}{\nobreakspace}#2} +\DeclareCaptionLabelFormat{parens}{\bothIfFirst{#1}{\nobreakspace}(#2)} +\def\caption@lfmt@default{\caption@lfmt@simple} +\newcommand\DeclareCaptionLabelSeparator[2]{% bugfixed v3.0a + \global\long\@namedef{caption@lsep@#1}{#2}} +\@onlypreamble\DeclareCaptionLabelSeparator +\newcommand*\caption@setlabelseparator[1]{% + \@ifundefined{caption@lsep@#1}% + {\PackageError{caption}{Undefined caption label separator `#1'}{\caption@eh}}% + {\expandafter\let\expandafter\caption@lsep\csname caption@lsep@#1\endcsname}} +\DeclareCaptionLabelSeparator{none}{} +\DeclareCaptionLabelSeparator{colon}{: } +\DeclareCaptionLabelSeparator{period}{. } +\DeclareCaptionLabelSeparator{space}{ } +\DeclareCaptionLabelSeparator{quad}{\quad} +\DeclareCaptionLabelSeparator{newline}{\newline} +\DeclareCaptionLabelSeparator{widespace}{\hspace{1em plus .3em}}% obsolete, do not use! +\def\caption@lsep@default{\caption@lsep@colon} +\newcommand*\DeclareCaptionJustification[2]{% bugfixed v3.0a + \global\@namedef{caption@hj@#1}{#2}} +\@onlypreamble\DeclareCaptionJustification +\newcommand*\caption@setjustification[1]{% + \@ifundefined{caption@hj@#1}% + {\PackageError{caption}{Undefined caption justification `#1'}{\caption@eh}}% + {\expandafter\let\expandafter\caption@hj\csname caption@hj@#1\endcsname}} +\newcommand\caption@centerfirst{% + \edef\caption@normaladjust{% + \leftskip\the\leftskip + \rightskip\the\rightskip + \parfillskip\the\parfillskip\relax}% + \leftskip\z@\@plus -1fil% + \rightskip\z@\@plus 1fil% + \parfillskip\z@skip + \noindent\hskip\z@\@plus 2fil% + \@setpar{\@@par\@restorepar\caption@normaladjust}} +\newcommand\caption@centerlast{% + \leftskip\z@\@plus 1fil% + \rightskip\z@\@plus -1fil% + \parfillskip\z@\@plus 2fil\relax} +\DeclareCaptionJustification{justified}{} +\DeclareCaptionJustification{centering}{\centering} +\DeclareCaptionJustification{centerfirst}{\caption@centerfirst} +\DeclareCaptionJustification{centerlast}{\caption@centerlast} +\DeclareCaptionJustification{raggedleft}{\raggedleft} +\DeclareCaptionJustification{raggedright}{\raggedright} +\def\caption@hj@default{\caption@hj@justified} +\DeclareCaptionJustification{Centering}{% + \caption@ragged\Centering\centering} +\DeclareCaptionJustification{RaggedLeft}{% + \caption@ragged\RaggedLeft\raggedleft} +\DeclareCaptionJustification{RaggedRight}{% + \caption@ragged\RaggedRight\raggedright} +\newcommand*\caption@ragged[2]{% + \@ifundefined{caption\string#1}{% + \PackageWarning{caption}{% + Cannot locate the `ragged2e' package, therefore\MessageBreak + substituting \string#2 for \string#1\MessageBreak}% + \global\@namedef{caption\string#1}}{}% + #2} +\AtBeginDocument{\IfFileExists{ragged2e.sty}{% + \RequirePackage{ragged2e}\let\caption@ragged\@firstoftwo}{}} +\newcommand\DeclareCaptionFont[2]{% bugfixed v3.0a + \define@key{caption@fnt}{#1}[]{\g@addto@macro\caption@tempa{#2}}} +\@onlypreamble\DeclareCaptionFont +\newcommand*\caption@setfont[2]{% + \let\caption@tempa\@empty + \begingroup + \setkeys{caption@fnt}{#2}% + \endgroup + \expandafter\let\csname caption#1\endcsname\caption@tempa} +\DeclareCaptionFont{default}{} +\DeclareCaptionFont{scriptsize}{\scriptsize} +\DeclareCaptionFont{footnotesize}{\footnotesize} +\DeclareCaptionFont{small}{\small} +\DeclareCaptionFont{normalsize}{\normalsize} +\DeclareCaptionFont{large}{\large} +\DeclareCaptionFont{Large}{\Large} +\DeclareCaptionFont{up}{\upshape} +\DeclareCaptionFont{it}{\itshape} +\DeclareCaptionFont{sl}{\slshape} +\DeclareCaptionFont{sc}{\scshape} +\DeclareCaptionFont{md}{\mdseries} +\DeclareCaptionFont{bf}{\bfseries} +\DeclareCaptionFont{rm}{\rmfamily} +\DeclareCaptionFont{sf}{\sffamily} +\DeclareCaptionFont{tt}{\ttfamily} +\newcommand*\caption@setposition[1]{% improved v3.0a + \caption@ifinlist{#1}{t,top,above}{% + \let\caption@position\@firstoftwo + }{\caption@ifinlist{#1}{b,bottom,below,default}{% + \let\caption@position\@secondoftwo + }{\caption@ifinlist{#1}{a,auto}{% + \let\caption@position\@undefined + }{% + \PackageError{caption}{Undefined caption position `#1'}{\caption@eh}% + }}}} +\def\captionsetup{\@ifnextchar[\caption@setuptype\caption@setup} +\def\caption@setuptype[#1]#2{% bugfixed v3.0a + \@ifundefined{caption@typ@#1}% + {\@namedef{caption@typ@#1}{#2}}% + {\expandafter\l@addto@macro\csname caption@typ@#1\endcsname{,#2}}} +\def\caption@setup{\setkeys{caption}} +\def\caption@esetup#1{% + \edef\caption@tempa{\noexpand\caption@setup{#1}}% + \caption@tempa} +\def\caption@settype#1{% + \@ifundefined{caption@typ@#1}{}{% + \caption@esetup{\csname caption@typ@#1\endcsname}}}% +\let\caption@setfloattype\caption@settype% new v3.0a +\newcommand*\clearcaptionsetup[1]{\@nameundef{caption@typ@#1}} +\newcommand*\showcaptionsetup[2][]{% + \def\caption@tempa{#1}% + \ifx\caption@tempa\@empty + \def\caption@tempa{Caption\space}% + \else + \def\caption@tempa{#1 Caption\space}% + \fi + \GenericWarning{\caption@tempa}{% + \caption@tempa Info: KV list on `#2'\MessageBreak + Data: (% + \@ifundefined{caption@typ@#2}{% + % Empty -- print nothing. + }{% + \@nameuse{caption@typ@#2}% + }% + )}} +\newcommand\caption@beginhook{} +\newcommand\caption@endhook{} +\newcommand\AtBeginCaption{\l@addto@macro\caption@beginhook} +\newcommand\AtEndCaption{\l@addto@macro\caption@endhook} +\newcommand\DeclareCaptionOption{% + \@ifstar{\caption@declareoption\AtEndOfPackage}{\caption@declareoption\@gobble}} +\newcommand*\caption@declareoption[2]{% + #1{\undefine@key{caption}{#2}}\define@key{caption}{#2}} +\@onlypreamble\DeclareCaptionOption +\@onlypreamble\caption@declareoption +\DeclareCaptionOption{default}[]{% + \caption@setup{style=default,position=default,aboveskip=10pt,belowskip=0pt}} +\DeclareCaptionOption{style}{\caption@setstyle{#1}} +\DeclareCaptionOption{format}{\caption@setformat{#1}} +\DeclareCaptionOption{labelformat}{\caption@setlabelformat{#1}} +\DeclareCaptionOption{labelsep}{\caption@setlabelseparator{#1}} +\DeclareCaptionOption{labelseparator}{\caption@setlabelseparator{#1}} +\DeclareCaptionOption{justification}{\caption@setjustification{#1}} +\DeclareCaptionOption{size}{\caption@setfont{size}{#1}}% changed v3.0a +\DeclareCaptionOption{font}{\caption@setfont{font}{#1}} +\DeclareCaptionOption{labelfont}{\caption@setfont{labelfont}{#1}} +\DeclareCaptionOption{textfont}{\caption@setfont{textfont}{#1}} +\DeclareCaptionOption{margin}{\caption@setmargin{#1}} +\DeclareCaptionOption{width}{\caption@setwidth{#1}} +\DeclareCaptionOption{indent}[\leftmargini]{\setlength\captionindent{#1}} +\DeclareCaptionOption{indention}[\leftmargini]{\setlength\captionindent{#1}} +\DeclareCaptionOption{parindent}[\parindent]{\setlength\captionparindent{#1}}% changed v3.0b +\DeclareCaptionOption{hangindent}[0pt]{\setlength\captionhangindent{#1}}% changed v3.0b +\DeclareCaptionOption{parskip}[5pt]{\AtBeginCaption{\setlength\parskip{#1}}} +\DeclareCaptionOption{singlelinecheck}[1]{\caption@setbool{slc}{#1}} +\DeclareCaptionOption{aboveskip}{\setlength\abovecaptionskip{#1}} +\DeclareCaptionOption{belowskip}{\setlength\belowcaptionskip{#1}} +\DeclareCaptionOption{position}{\caption@setposition{#1}} +\DeclareCaptionOption{listof}{\caption@setbool{lof}{#1}}% new v3.0b +\DeclareCaptionOption{debug}{\def\caption@debug{#1}} +\captionsetup{style=default,position=default,listof=1,debug=0} +\newcommand\caption@fixposition{% + \ifx\caption@position\@undefined + \caption@autoposition + \fi} +\newcommand\caption@autoposition{% bugfixed v3.0a + \ifvmode + \ifodd\caption@debug\relax + \edef\caption@tempa{\the\prevdepth}% + \PackageInfo{caption}{\protect\prevdepth=\caption@tempa}% + \fi + \ifdim\prevdepth>-\p@ + \let\caption@position\@secondoftwo + \else + \let\caption@position\@firstoftwo + \fi + \else + \ifodd\caption@debug\relax + \PackageInfo{caption}{no \protect\prevdepth}% + \fi + \let\caption@position\@secondoftwo + \fi} +\newcommand\caption@iftop{% bugfixed v3.0a + \ifx\caption@position\@firstoftwo + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} +\newcommand\caption@make[2]{% + \caption@@make{\caption@lfmt{#1}{#2}}} +\newcommand\caption@@make[2]{% + \caption@beginhook + \caption@calcmargin + \advance\captionmargin by \captionindent + \advance\captionwidth by -\captionindent + \hskip\captionmargin + \vbox{\hsize=\captionwidth + \ifdim\captionindent=\z@\else + \hskip-\captionindent + \fi + \caption@ifslc{% + \ifx\caption@sls\@empty\else + \caption@beginslc + \sbox\@tempboxa{\caption@@@make{#1}{#2}}% + \ifdim\wd\@tempboxa >\hsize + \caption@endslc + \else + \caption@endslc + \caption@esetup\caption@sls + \fi + \fi}{}% + \captionsize\captionfont\strut + \caption@@@make{#1}{#2}}% + \caption@endhook + \global\caption@starfalse} +\newcommand\caption@calcmargin{% + \ifcaption@width + \captionmargin\hsize + \advance\captionmargin by -\captionwidth + \divide\captionmargin by 2 + \else + \captionwidth\hsize + \advance\captionwidth by -2\captionmargin + \fi + \ifodd\caption@debug\relax + \PackageInfo{caption}{\protect\hsize=\the\hsize, + \protect\margin=\the\captionmargin, + \protect\width=\the\captionwidth}% + \fi} +\newcommand\caption@beginslc{% + \begingroup + \let\label\@gobble\let\@footnotetext\@gobble + \def\stepcounter##1{\advance\csname c@##1\endcsname\@ne\relax}} +\newcommand\caption@endslc{% + \endgroup} +\newcommand\caption@@@make[2]{% + \ifcaption@star + \let\caption@lfmt\@gobbletwo + \let\caption@lsep\relax + \fi + \def\caption@tempa{#2}% + \def\caption@tempb{\ignorespaces}% + \ifx\caption@tempa\caption@tempb + \let\caption@tempa\@empty + \fi + \ifx\caption@tempa\@empty + \let\caption@lsep\relax + \fi + \def\caption@@par{% + \parindent\captionparindent\hangindent\captionhangindent}% + \@setpar{\@@par\caption@@par}\caption@@par + \caption@hj\captionsize\captionfont + \caption@fmt{{\captionlabelfont#1}}% + {{\captionlabelfont\caption@lsep}}% + {{\captiontextfont\nobreak\hskip\z@skip#2\par}}} +\DeclareCaptionOption{config}[caption]{% + \InputIfFileExists{#1.cfg}{\typeout{*** Local configuration file + #1.cfg used ***}}% + {\PackageWarning{caption}{Configuration + file #1.cfg not found}}} +\DeclareCaptionOption*{figureposition}{\captionsetup[figure]{position=#1}}% new v3.0a +\DeclareCaptionOption*{tableposition}{\captionsetup[table]{position=#1}}% new v3.0a +\DeclareCaptionOption*{normal}[]{\caption@setformat{normal}} +\DeclareCaptionOption*{isu}[]{\caption@setformat{hang}} +\DeclareCaptionOption*{hang}[]{\caption@setformat{hang}} +\DeclareCaptionOption*{center}[]{\caption@setjustification{centering}} +\DeclareCaptionOption*{anne}[]{\caption@setjustification{centerlast}} +\DeclareCaptionOption*{centerlast}[]{\caption@setjustification{centerlast}} +\DeclareCaptionOption*{nooneline}[]{\caption@setbool{slc}{0}} +\DeclareCaptionOption*{scriptsize}[]{\def\captionfont{\scriptsize}} +\DeclareCaptionOption*{footnotesize}[]{\def\captionfont{\footnotesize}} +\DeclareCaptionOption*{small}[]{\def\captionfont{\small}} +\DeclareCaptionOption*{normalsize}[]{\def\captionfont{\normalsize}} +\DeclareCaptionOption*{large}[]{\def\captionfont{\large}} +\DeclareCaptionOption*{Large}[]{\def\captionfont{\Large}} +\DeclareCaptionOption*{up}[]{\l@addto@macro\captionlabelfont\upshape} +\DeclareCaptionOption*{it}[]{\l@addto@macro\captionlabelfont\itshape} +\DeclareCaptionOption*{sl}[]{\l@addto@macro\captionlabelfont\slshape} +\DeclareCaptionOption*{sc}[]{\l@addto@macro\captionlabelfont\scshape} +\DeclareCaptionOption*{md}[]{\l@addto@macro\captionlabelfont\mdseries} +\DeclareCaptionOption*{bf}[]{\l@addto@macro\captionlabelfont\bfseries} +\DeclareCaptionOption*{rm}[]{\l@addto@macro\captionlabelfont\rmfamily} +\DeclareCaptionOption*{sf}[]{\l@addto@macro\captionlabelfont\sffamily} +\DeclareCaptionOption*{tt}[]{\l@addto@macro\captionlabelfont\ttfamily} +\caption@setbool{ruled}{0} +\DeclareCaptionOption*{ruled}[]{\caption@setbool{ruled}{1}} +\newcommand*\DeclareCaptionPackage[1]{% + \caption@setbool{pkt@#1}{1}% + \DeclareCaptionOption*{#1}{\caption@setbool{pkt@#1}{##1}}} +\DeclareCaptionPackage{caption} +\DeclareCaptionPackage{float} +\DeclareCaptionPackage{listings} +\DeclareCaptionPackage{longtable} +\DeclareCaptionPackage{rotating} +\DeclareCaptionPackage{sidecap} +\DeclareCaptionPackage{supertabular} +\let\DeclareCaptionPackage\@undefined +\def\ProcessOptionsWithKV#1{% bugfixed v3.0a + \let\@tempc\relax + \let\caption@tempa\@empty + \@for\CurrentOption:=\@classoptionslist\do{% + \@ifundefined{KV@#1@\CurrentOption}% + {}% + {% + \edef\caption@tempa{\caption@tempa,\CurrentOption,}% + \@expandtwoargs\@removeelement\CurrentOption + \@unusedoptionlist\@unusedoptionlist + }% + }% + \edef\caption@tempa{% + \noexpand\setkeys{#1}{% + \caption@tempa\@ptionlist{\@currname.\@currext}% + }% + }% + \caption@tempa + \let\CurrentOption\@empty + \AtEndOfPackage{\let\@unprocessedoptions\relax}} +\ProcessOptionsWithKV{caption} +\let\ProcessOptionsWithKV\@undefined +\def\captionof{\@ifstar{\caption@of{\caption*}}{\caption@of\caption}} +\newcommand*\caption@of[2]{\def\@captype{#2}#1} +\providecommand\ContinuedFloat{% + \ifx\@captype\@undefined + \@latex@error{\noexpand\ContinuedFloat outside float}\@ehd + \else + \addtocounter{\@captype}{\m@ne}% + \fi}% +\newcommand*\caption@floatname[1]{\@nameuse{#1name}} +\newcommand*\caption@thefloat[1]{\@nameuse{the#1}} +\def\caption@letfloattype#1{% + \def\caption@setfloattype##1{% + \caption@settype{##1}\caption@settype{#1}}} +\newcommand*\caption@begin[1]{% + \begingroup + \caption@setfloattype{#1}% + \@namedef{fnum@#1}{% + \caption@lfmt{\caption@floatname{#1}}{\caption@thefloat{#1}}}% + \caption@fixposition + \global\let\caption@fixedposition\caption@position + \caption@@begin{#1}} +\newcommand*\caption@beginex[1]{% + \caption@begin{#1}% + \caption@preparelof} +\newcommand*\caption@end{% + \caption@@end + \endgroup + \let\caption@position\caption@fixedposition} +\let\caption@@begin\@gobble% new v3.0a +\let\caption@@end\@empty% new v3.0a +\newcommand*\caption@preparelof[1]{% changed v3.0b + \caption@ifbool{lof}% + {\def\caption@tempa{#1}}% + {\let\caption@tempa\@empty}% + \ifx\caption@tempa\@empty + \def\addcontentsline##1##2##3{}% + \fi} +\caption@ifpkt@caption{ + \renewcommand\@makecaption[2]{% + \caption@iftop{\vskip\belowcaptionskip}{\vskip\abovecaptionskip}% + \ifnum\caption@debug>1 % + \llap{$\caption@iftop\downarrow\uparrow$ }% + \fi + \caption@@make{#1}{#2}% + \caption@iftop{\vskip\abovecaptionskip}{\vskip\belowcaptionskip}} + \AtBeginDocument{% + \let\caption@@old\@caption + \long\def\@caption#1[#2]#3{% + \caption@beginex{#1}{#2}% + \caption@@old{#1}[{#2}]{#3}% + \caption@end}% + \@ifundefined{cc@caption}{% + \def\caption@caption#1{% + \@ifstar{\global\caption@startrue\@ifnextchar[{#1}{#1[]}}{#1}}% + \let\caption@old\caption + \def\caption{\caption@caption\caption@old}% + }{% + \let\caption@@captcont\cc@scaption + \long\def\cc@scaption#1[#2]#3{% + \caption@beginex{#1}{#2}% + \caption@@captcont{#1}[{#2}]{#3}% + \caption@end}% + }% + }}{} +\AtEndOfPackage{\let\caption@ifpkt@caption\@undefined}% bugfixed v3.0a +\newcommand*\caption@ifpackage[2]{% + \let\next\@gobble + \caption@ifpkt@caption{% + \caption@ifbool{pkt@#1}{% + \@ifundefined{#2}% + {\let\next\AtBeginDocument}% + {\let\next\@firstofone}}{}% + \ifodd\caption@debug\relax + \edef\caption@tempa{% + \caption@ifbool{pkt@#1}{% + \@ifundefined{#2}{AtBeginDocument}{firstofone}% + }{gobble}}% + \PackageInfo{caption}{#1 = \caption@ifbool{pkt@#1}{1}{0} % + (\@ifundefined{#2}{not }{}loaded -> \caption@tempa)}% + \fi + }{}% + \@nameundef{caption@ifpkt@#1}% bugfixed v3.0a + \next} +\AtEndOfPackage{\let\caption@ifpackage\@undefined} +\def\caption@setfloatposition{% + \caption@setposition{\@fs@iftopcapt t\else b\fi}} +\caption@ifpackage{float}{float@caption}{% + \ifx\float@caption\relax + \else + \PackageInfo{caption}{float package v1.2 (or newer) detected}% + \let\caption@of@float\@gobble + \renewcommand*\caption@of[2]{% + \@ifundefined{fst@#2}{}{% + \let\caption@of@float\@firstofone + \@nameuse{fst@#2}\@float@setevery{#2}}% + \def\@captype{#2}#1}% + \renewcommand*\caption@floatname[1]{% + \@nameuse{\@ifundefined{fname@#1}{#1name}{fname@#1}}}% + \let\caption@@float\float@caption + \long\def\float@caption#1[#2]#3{% + \caption@beginex{#1}{#2}% + \let\@fs@capt\caption@@make + \caption@@float{#1}[{#2}]{#3}% + \caption@of@float{% + \def\caption@@make##1##2{\unvbox\@floatcapt}% + \@makecaption{}{}}% + \caption@end}% + \renewcommand*\caption@setfloattype[1]{% improved v3.0a + \caption@fixfloat@c{#1}% + \expandafter\ifx\csname @float@c@#1\endcsname\float@caption + \expandafter\let\expandafter\caption@fst\csname fst@#1\endcsname + \edef\caption@fst{\noexpand\string\expandafter\noexpand\caption@fst}% + \edef\caption@fst{\noexpand\@gobblefour\caption@fst}% + \@ifundefined{caption@sty@\caption@fst}{}{\caption@setstyle\caption@fst}% + \caption@setfloatposition% changed v3.0b + \fi + \caption@settype{#1}}% + \let\caption@float\caption + \def\caption{% + \ifx\@captype\@undefined + \@latex@error{\noexpand\caption outside float}\@ehd + \expandafter\@gobble + \else + \caption@fixfloat@c\@captype + \fi + \caption@float}% + \def\caption@fixfloat@c#1{% + \expandafter\let\expandafter\caption@tempa\csname @float@c@#1\endcsname + \ifx\caption@tempa\relax + \else\ifx\caption@tempa\float@caption + \else\ifx\caption@tempa\@caption + \else\ifx\caption@tempa\caption@@float + \ifodd\caption@debug\relax + \PackageInfo{caption}{\protect\@float@c@#1\space := \protect\float@caption}% + \fi + \expandafter\let\csname @float@c@#1\endcsname\float@caption + \else + \ifodd\caption@debug\relax + \PackageInfo{caption}{\protect\@float@c@#1\space := \protect\@caption}% + \fi + \expandafter\let\csname @float@c@#1\endcsname\@caption + \fi\fi\fi\fi}% + \fi} +\caption@ifbool{ruled}{}{% + \DeclareCaptionStyle{ruled}{labelfont=bf,labelsep=space}} +\let\caption@ifruled\@undefined +\caption@ifpackage{listings}{lst@MakeCaption}{% + \ifx\lst@MakeCaption\relax + \else + \PackageInfo{caption}{listings package v1.2 (or newer) detected}% + \let\caption@lst@MakeCaption\lst@MakeCaption + \def\lst@MakeCaption#1{% + \let\caption@setfloattype\caption@settype + \def\caption@autoposition{\caption@setposition{#1}}% + \caption@begin{lstlisting}% + \caption@lst@MakeCaption{#1}% + \caption@end}% + \fi} +\caption@ifpackage{longtable}{LT@makecaption}{% + \ifx\LT@makecaption\relax + \else + \PackageInfo{caption}{longtable package v3.15 (or newer) detected}% + \def\LT@makecaption#1#2#3{% + \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\linewidth{% + \caption@letfloattype{longtable}% + \caption@begin{table}% + \ifdim\LTcapwidth=4in \else + \caption@setwidth\LTcapwidth + \fi + \caption@startrue#1\caption@starfalse + \caption@@make{#2}{#3}% + \caption@end + \endgraf\vskip\baselineskip}% + \hss}}}% + \fi} +\caption@ifpackage{rotating}{@rotcaption}{% + \ifx\@rotcaption\relax + \else + \PackageInfo{caption}{rotating package v2.0 (or newer) detected}% + \@ifundefined{caption@caption}{}{% + \let\caption@rot\rotcaption + \def\rotcaption{\caption@caption\caption@rot}}% + \let\caption@@rot\@rotcaption + \long\def\@rotcaption#1[#2]#3{% + \caption@beginex{#1}{#2}% + \caption@@rot{#1}[{#2}]{#3}% + \caption@end}% + \long\def\@makerotcaption#1#2{% + \rotatebox{90}{% + \begin{minipage}{.8\textheight}% + \caption@@make{#1}{#2}% + \end{minipage}% + }\par + \hspace{12pt}}% + \fi} +\caption@ifpackage{sidecap}{endSC@FLOAT}{% + \ifx\endSC@FLOAT\relax + \else + \PackageInfo{caption}{sidecap package v1.4d (or newer) detected}% + \let\SC@caption=\caption + \@ifundefined{caption@caption}{}{% + \let\caption@SC@zfloat\SC@zfloat + \def\SC@zfloat#1#2#3[#4]{% + \caption@SC@zfloat{#1}{#2}{#3}[#4]% + \global\let\SC@CAPsetup\@empty + \renewcommand\captionsetup[1]{\g@addto@macro\SC@CAPsetup{,##1}}% + \let\caption@old\caption + \def\caption{\caption@caption\caption@old}% + }}% + \let\caption@endSC@FLOAT\endSC@FLOAT + \def\endSC@FLOAT{% + \caption@setmargin\z@ + \@ifundefined{SC@justify}{}{% + \ifx\SC@justify\@empty\else + \let\caption@hj\SC@justify + \let\SC@justify\@empty + \fi}% + \caption@esetup\SC@CAPsetup + \caption@letfloattype{SC\@captype}% + \caption@endSC@FLOAT}% + \fi} +\def\caption@setSTposition{% + \caption@setposition{\if@topcaption t\else b\fi}} +\caption@ifpackage{supertabular}{ST@caption}{% + \ifx\ST@caption\relax + \else + \PackageInfo{caption}{supertabular package detected}% + \let\caption@ST\ST@caption + \long\def\ST@caption#1[#2]#3{\par% bugfixed v3.0a + \caption@letfloattype{supertabular}% + \let\caption@fixposition\caption@setSTposition + \caption@beginex{#1}{#2}% + \addcontentsline{\csname ext@#1\endcsname}{#1}% + {\protect\numberline{% + \csname the#1\endcsname}{\ignorespaces #2}}% + \@parboxrestore + \normalsize + \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \caption@end}% + \fi} +\AtBeginDocument{\let\scr@caption\caption} +\endinput +%% +%% End of file `caption.sty'. diff --git a/vu-cs-standard-thesis/fancyhdr.sty b/vu-cs-standard-thesis/fancyhdr.sty new file mode 100644 index 0000000..77ed4e3 --- /dev/null +++ b/vu-cs-standard-thesis/fancyhdr.sty @@ -0,0 +1,485 @@ +% fancyhdr.sty version 3.2 +% Fancy headers and footers for LaTeX. +% Piet van Oostrum, +% Dept of Computer and Information Sciences, University of Utrecht, +% Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands +% Telephone: +31 30 2532180. Email: piet@cs.uu.nl +% ======================================================================== +% LICENCE: +% This file may be distributed under the terms of the LaTeX Project Public +% License, as described in lppl.txt in the base LaTeX distribution. +% Either version 1 or, at your option, any later version. +% ======================================================================== +% MODIFICATION HISTORY: +% Sep 16, 1994 +% version 1.4: Correction for use with \reversemargin +% Sep 29, 1994: +% version 1.5: Added the \iftopfloat, \ifbotfloat and \iffloatpage commands +% Oct 4, 1994: +% version 1.6: Reset single spacing in headers/footers for use with +% setspace.sty or doublespace.sty +% Oct 4, 1994: +% version 1.7: changed \let\@mkboth\markboth to +% \def\@mkboth{\protect\markboth} to make it more robust +% Dec 5, 1994: +% version 1.8: corrections for amsbook/amsart: define \@chapapp and (more +% importantly) use the \chapter/sectionmark definitions from ps@headings if +% they exist (which should be true for all standard classes). +% May 31, 1995: +% version 1.9: The proposed \renewcommand{\headrulewidth}{\iffloatpage... +% construction in the doc did not work properly with the fancyplain style. +% June 1, 1995: +% version 1.91: The definition of \@mkboth wasn't restored on subsequent +% \pagestyle{fancy}'s. +% June 1, 1995: +% version 1.92: The sequence \pagestyle{fancyplain} \pagestyle{plain} +% \pagestyle{fancy} would erroneously select the plain version. +% June 1, 1995: +% version 1.93: \fancypagestyle command added. +% Dec 11, 1995: +% version 1.94: suggested by Conrad Hughes +% CJCH, Dec 11, 1995: added \footruleskip to allow control over footrule +% position (old hardcoded value of .3\normalbaselineskip is far too high +% when used with very small footer fonts). +% Jan 31, 1996: +% version 1.95: call \@normalsize in the reset code if that is defined, +% otherwise \normalsize. +% this is to solve a problem with ucthesis.cls, as this doesn't +% define \@currsize. Unfortunately for latex209 calling \normalsize doesn't +% work as this is optimized to do very little, so there \@normalsize should +% be called. Hopefully this code works for all versions of LaTeX known to +% mankind. +% April 25, 1996: +% version 1.96: initialize \headwidth to a magic (negative) value to catch +% most common cases that people change it before calling \pagestyle{fancy}. +% Note it can't be initialized when reading in this file, because +% \textwidth could be changed afterwards. This is quite probable. +% We also switch to \MakeUppercase rather than \uppercase and introduce a +% \nouppercase command for use in headers. and footers. +% May 3, 1996: +% version 1.97: Two changes: +% 1. Undo the change in version 1.8 (using the pagestyle{headings} defaults +% for the chapter and section marks. The current version of amsbook and +% amsart classes don't seem to need them anymore. Moreover the standard +% latex classes don't use \markboth if twoside isn't selected, and this is +% confusing as \leftmark doesn't work as expected. +% 2. include a call to \ps@empty in ps@@fancy. This is to solve a problem +% in the amsbook and amsart classes, that make global changes to \topskip, +% which are reset in \ps@empty. Hopefully this doesn't break other things. +% May 7, 1996: +% version 1.98: +% Added % after the line \def\nouppercase +% May 7, 1996: +% version 1.99: This is the alpha version of fancyhdr 2.0 +% Introduced the new commands \fancyhead, \fancyfoot, and \fancyhf. +% Changed \headrulewidth, \footrulewidth, \footruleskip to +% macros rather than length parameters, In this way they can be +% conditionalized and they don't consume length registers. There is no need +% to have them as length registers unless you want to do calculations with +% them, which is unlikely. Note that this may make some uses of them +% incompatible (i.e. if you have a file that uses \setlength or \xxxx=) +% May 10, 1996: +% version 1.99a: +% Added a few more % signs +% May 10, 1996: +% version 1.99b: +% Changed the syntax of \f@nfor to be resistent to catcode changes of := +% Removed the [1] from the defs of \lhead etc. because the parameter is +% consumed by the \@[xy]lhead etc. macros. +% June 24, 1997: +% version 1.99c: +% corrected \nouppercase to also include the protected form of \MakeUppercase +% \global added to manipulation of \headwidth. +% \iffootnote command added. +% Some comments added about \@fancyhead and \@fancyfoot. +% Aug 24, 1998 +% version 1.99d +% Changed the default \ps@empty to \ps@@empty in order to allow +% \fancypagestyle{empty} redefinition. +% Oct 11, 2000 +% version 2.0 +% Added LPPL license clause. +% +% A check for \headheight is added. An errormessage is given (once) if the +% header is too large. Empty headers don't generate the error even if +% \headheight is very small or even 0pt. +% Warning added for the use of 'E' option when twoside option is not used. +% In this case the 'E' fields will never be used. +% +% Mar 10, 2002 +% version 2.1beta +% New command: \fancyhfoffset[place]{length} +% defines offsets to be applied to the header/footer to let it stick into +% the margins (if length > 0). +% place is like in fancyhead, except that only E,O,L,R can be used. +% This replaces the old calculation based on \headwidth and the marginpar +% area. +% \headwidth will be dynamically calculated in the headers/footers when +% this is used. +% +% Mar 26, 2002 +% version 2.1beta2 +% \fancyhfoffset now also takes h,f as possible letters in the argument to +% allow the header and footer widths to be different. +% New commands \fancyheadoffset and \fancyfootoffset added comparable to +% \fancyhead and \fancyfoot. +% Errormessages and warnings have been made more informative. +% +% Dec 9, 2002 +% version 2.1 +% The defaults for \footrulewidth, \plainheadrulewidth and +% \plainfootrulewidth are changed from \z@skip to 0pt. In this way when +% someone inadvertantly uses \setlength to change any of these, the value +% of \z@skip will not be changed, rather an errormessage will be given. + +% March 3, 2004 +% Release of version 3.0 + +% Oct 7, 2004 +% version 3.1 +% Added '\endlinechar=13' to \fancy@reset to prevent problems with +% includegraphics in header when verbatiminput is active. + +% March 22, 2005 +% version 3.2 +% reset \everypar (the real one) in \fancy@reset because spanish.ldf does +% strange things with \everypar between << and >>. + +\def\ifancy@mpty#1{\def\temp@a{#1}\ifx\temp@a\@empty} + +\def\fancy@def#1#2{\ifancy@mpty{#2}\fancy@gbl\def#1{\leavevmode}\else + \fancy@gbl\def#1{#2\strut}\fi} + +\let\fancy@gbl\global + +\def\@fancyerrmsg#1{% + \ifx\PackageError\undefined + \errmessage{#1}\else + \PackageError{Fancyhdr}{#1}{}\fi} +\def\@fancywarning#1{% + \ifx\PackageWarning\undefined + \errmessage{#1}\else + \PackageWarning{Fancyhdr}{#1}{}\fi} + +% Usage: \@forc \var{charstring}{command to be executed for each char} +% This is similar to LaTeX's \@tfor, but expands the charstring. + +\def\@forc#1#2#3{\expandafter\f@rc\expandafter#1\expandafter{#2}{#3}} +\def\f@rc#1#2#3{\def\temp@ty{#2}\ifx\@empty\temp@ty\else + \f@@rc#1#2\f@@rc{#3}\fi} +\def\f@@rc#1#2#3\f@@rc#4{\def#1{#2}#4\f@rc#1{#3}{#4}} + +% Usage: \f@nfor\name:=list\do{body} +% Like LaTeX's \@for but an empty list is treated as a list with an empty +% element + +\newcommand{\f@nfor}[3]{\edef\@fortmp{#2}% + \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}} + +% Usage: \def@ult \cs{defaults}{argument} +% sets \cs to the characters from defaults appearing in argument +% or defaults if it would be empty. All characters are lowercased. + +\newcommand\def@ult[3]{% + \edef\temp@a{\lowercase{\edef\noexpand\temp@a{#3}}}\temp@a + \def#1{}% + \@forc\tmpf@ra{#2}% + {\expandafter\if@in\tmpf@ra\temp@a{\edef#1{#1\tmpf@ra}}{}}% + \ifx\@empty#1\def#1{#2}\fi} +% +% \if@in +% +\newcommand{\if@in}[4]{% + \edef\temp@a{#2}\def\temp@b##1#1##2\temp@b{\def\temp@b{##1}}% + \expandafter\temp@b#2#1\temp@b\ifx\temp@a\temp@b #4\else #3\fi} + +\newcommand{\fancyhead}{\@ifnextchar[{\f@ncyhf\fancyhead h}% + {\f@ncyhf\fancyhead h[]}} +\newcommand{\fancyfoot}{\@ifnextchar[{\f@ncyhf\fancyfoot f}% + {\f@ncyhf\fancyfoot f[]}} +\newcommand{\fancyhf}{\@ifnextchar[{\f@ncyhf\fancyhf{}}% + {\f@ncyhf\fancyhf{}[]}} + +% New commands for offsets added + +\newcommand{\fancyheadoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyheadoffset h}% + {\f@ncyhfoffs\fancyheadoffset h[]}} +\newcommand{\fancyfootoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyfootoffset f}% + {\f@ncyhfoffs\fancyfootoffset f[]}} +\newcommand{\fancyhfoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyhfoffset{}}% + {\f@ncyhfoffs\fancyhfoffset{}[]}} + +% The header and footer fields are stored in command sequences with +% names of the form: \f@ncy with for [eo], from [lcr] +% and from [hf]. + +\def\f@ncyhf#1#2[#3]#4{% + \def\temp@c{}% + \@forc\tmpf@ra{#3}% + {\expandafter\if@in\tmpf@ra{eolcrhf,EOLCRHF}% + {}{\edef\temp@c{\temp@c\tmpf@ra}}}% + \ifx\@empty\temp@c\else + \@fancyerrmsg{Illegal char `\temp@c' in \string#1 argument: + [#3]}% + \fi + \f@nfor\temp@c{#3}% + {\def@ult\f@@@eo{eo}\temp@c + \if@twoside\else + \if\f@@@eo e\@fancywarning + {\string#1's `E' option without twoside option is useless}\fi\fi + \def@ult\f@@@lcr{lcr}\temp@c + \def@ult\f@@@hf{hf}{#2\temp@c}% + \@forc\f@@eo\f@@@eo + {\@forc\f@@lcr\f@@@lcr + {\@forc\f@@hf\f@@@hf + {\expandafter\fancy@def\csname + f@ncy\f@@eo\f@@lcr\f@@hf\endcsname + {#4}}}}}} + +\def\f@ncyhfoffs#1#2[#3]#4{% + \def\temp@c{}% + \@forc\tmpf@ra{#3}% + {\expandafter\if@in\tmpf@ra{eolrhf,EOLRHF}% + {}{\edef\temp@c{\temp@c\tmpf@ra}}}% + \ifx\@empty\temp@c\else + \@fancyerrmsg{Illegal char `\temp@c' in \string#1 argument: + [#3]}% + \fi + \f@nfor\temp@c{#3}% + {\def@ult\f@@@eo{eo}\temp@c + \if@twoside\else + \if\f@@@eo e\@fancywarning + {\string#1's `E' option without twoside option is useless}\fi\fi + \def@ult\f@@@lcr{lr}\temp@c + \def@ult\f@@@hf{hf}{#2\temp@c}% + \@forc\f@@eo\f@@@eo + {\@forc\f@@lcr\f@@@lcr + {\@forc\f@@hf\f@@@hf + {\expandafter\setlength\csname + f@ncyO@\f@@eo\f@@lcr\f@@hf\endcsname + {#4}}}}}% + \fancy@setoffs} + +% Fancyheadings version 1 commands. These are more or less deprecated, +% but they continue to work. + +\newcommand{\lhead}{\@ifnextchar[{\@xlhead}{\@ylhead}} +\def\@xlhead[#1]#2{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#2}} +\def\@ylhead#1{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#1}} + +\newcommand{\chead}{\@ifnextchar[{\@xchead}{\@ychead}} +\def\@xchead[#1]#2{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#2}} +\def\@ychead#1{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#1}} + +\newcommand{\rhead}{\@ifnextchar[{\@xrhead}{\@yrhead}} +\def\@xrhead[#1]#2{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#2}} +\def\@yrhead#1{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#1}} + +\newcommand{\lfoot}{\@ifnextchar[{\@xlfoot}{\@ylfoot}} +\def\@xlfoot[#1]#2{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#2}} +\def\@ylfoot#1{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#1}} + +\newcommand{\cfoot}{\@ifnextchar[{\@xcfoot}{\@ycfoot}} +\def\@xcfoot[#1]#2{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#2}} +\def\@ycfoot#1{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#1}} + +\newcommand{\rfoot}{\@ifnextchar[{\@xrfoot}{\@yrfoot}} +\def\@xrfoot[#1]#2{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#2}} +\def\@yrfoot#1{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#1}} + +\newlength{\fancy@headwidth} +\let\headwidth\fancy@headwidth +\newlength{\f@ncyO@elh} +\newlength{\f@ncyO@erh} +\newlength{\f@ncyO@olh} +\newlength{\f@ncyO@orh} +\newlength{\f@ncyO@elf} +\newlength{\f@ncyO@erf} +\newlength{\f@ncyO@olf} +\newlength{\f@ncyO@orf} +\newcommand{\headrulewidth}{0.4pt} +\newcommand{\footrulewidth}{0pt} +\newcommand{\footruleskip}{.3\normalbaselineskip} + +% Fancyplain stuff shouldn't be used anymore (rather +% \fancypagestyle{plain} should be used), but it must be present for +% compatibility reasons. + +\newcommand{\plainheadrulewidth}{0pt} +\newcommand{\plainfootrulewidth}{0pt} +\newif\if@fancyplain \@fancyplainfalse +\def\fancyplain#1#2{\if@fancyplain#1\else#2\fi} + +\headwidth=-123456789sp %magic constant + +% Command to reset various things in the headers: +% a.o. single spacing (taken from setspace.sty) +% and the catcode of ^^M (so that epsf files in the header work if a +% verbatim crosses a page boundary) +% It also defines a \nouppercase command that disables \uppercase and +% \Makeuppercase. It can only be used in the headers and footers. +\let\fnch@everypar\everypar% save real \everypar because of spanish.ldf +\def\fancy@reset{\fnch@everypar{}\restorecr\endlinechar=13 + \def\baselinestretch{1}% + \def\nouppercase##1{{\let\uppercase\relax\let\MakeUppercase\relax + \expandafter\let\csname MakeUppercase \endcsname\relax##1}}% + \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e + \ifx\@normalsize\undefined \normalsize % for ucthesis.cls + \else \@normalsize \fi + \else% NFSS (2.09) present + \@newbaseline% + \fi} + +% Initialization of the head and foot text. + +% The default values still contain \fancyplain for compatibility. +\fancyhf{} % clear all +% lefthead empty on ``plain'' pages, \rightmark on even, \leftmark on odd pages +% evenhead empty on ``plain'' pages, \leftmark on even, \rightmark on odd pages +\if@twoside + \fancyhead[el,or]{\fancyplain{}{\sl\rightmark}} + \fancyhead[er,ol]{\fancyplain{}{\sl\leftmark}} +\else + \fancyhead[l]{\fancyplain{}{\sl\rightmark}} + \fancyhead[r]{\fancyplain{}{\sl\leftmark}} +\fi +\fancyfoot[c]{\rm\thepage} % page number + +% Use box 0 as a temp box and dimen 0 as temp dimen. +% This can be done, because this code will always +% be used inside another box, and therefore the changes are local. + +\def\@fancyvbox#1#2{\setbox0\vbox{#2}\ifdim\ht0>#1\@fancywarning + {\string#1 is too small (\the#1): ^^J Make it at least \the\ht0.^^J + We now make it that large for the rest of the document.^^J + This may cause the page layout to be inconsistent, however\@gobble}% + \dimen0=#1\global\setlength{#1}{\ht0}\ht0=\dimen0\fi + \box0} + +% Put together a header or footer given the left, center and +% right text, fillers at left and right and a rule. +% The \lap commands put the text into an hbox of zero size, +% so overlapping text does not generate an errormessage. +% These macros have 5 parameters: +% 1. LEFTSIDE BEARING % This determines at which side the header will stick +% out. When \fancyhfoffset is used this calculates \headwidth, otherwise +% it is \hss or \relax (after expansion). +% 2. \f@ncyolh, \f@ncyelh, \f@ncyolf or \f@ncyelf. This is the left component. +% 3. \f@ncyoch, \f@ncyech, \f@ncyocf or \f@ncyecf. This is the middle comp. +% 4. \f@ncyorh, \f@ncyerh, \f@ncyorf or \f@ncyerf. This is the right component. +% 5. RIGHTSIDE BEARING. This is always \relax or \hss (after expansion). + +\def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset + \@fancyvbox\headheight{\hbox + {\rlap{\parbox[b]{\headwidth}{\raggedright#2}}\hfill + \parbox[b]{\headwidth}{\centering#3}\hfill + \llap{\parbox[b]{\headwidth}{\raggedleft#4}}}\headrule}}#5} + +\def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset + \@fancyvbox\footskip{\footrule + \hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2}}\hfill + \parbox[t]{\headwidth}{\centering#3}\hfill + \llap{\parbox[t]{\headwidth}{\raggedleft#4}}}}}#5} + +\def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi + \hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}} + +\def\footrule{{\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi + \vskip-\footruleskip\vskip-\footrulewidth + \hrule\@width\headwidth\@height\footrulewidth\vskip\footruleskip}} + +\def\ps@fancy{% +\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%for amsbook +% +% Define \MakeUppercase for old LaTeXen. +% Note: we used \def rather than \let, so that \let\uppercase\relax (from +% the version 1 documentation) will still work. +% +\@ifundefined{MakeUppercase}{\def\MakeUppercase{\uppercase}}{}% +\@ifundefined{chapter}{\def\sectionmark##1{\markboth +{\MakeUppercase{\ifnum \c@secnumdepth>\z@ + \thesection\hskip 1em\relax \fi ##1}}{}}% +\def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne + \thesubsection\hskip 1em\relax \fi ##1}}}% +{\def\chaptermark##1{\markboth {\MakeUppercase{\ifnum \c@secnumdepth>\m@ne + \@chapapp\ \thechapter. \ \fi ##1}}{}}% +\def\sectionmark##1{\markright{\MakeUppercase{\ifnum \c@secnumdepth >\z@ + \thesection. \ \fi ##1}}}}% +%\csname ps@headings\endcsname % use \ps@headings defaults if they exist +\ps@@fancy +\gdef\ps@fancy{\@fancyplainfalse\ps@@fancy}% +% Initialize \headwidth if the user didn't +% +\ifdim\headwidth<0sp +% +% This catches the case that \headwidth hasn't been initialized and the +% case that the user added something to \headwidth in the expectation that +% it was initialized to \textwidth. We compensate this now. This loses if +% the user intended to multiply it by a factor. But that case is more +% likely done by saying something like \headwidth=1.2\textwidth. +% The doc says you have to change \headwidth after the first call to +% \pagestyle{fancy}. This code is just to catch the most common cases were +% that requirement is violated. +% + \global\advance\headwidth123456789sp\global\advance\headwidth\textwidth +\fi} +\def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy} +\def\ps@plain@fancy{\@fancyplaintrue\ps@@fancy} +\let\ps@@empty\ps@empty +\def\ps@@fancy{% +\ps@@empty % This is for amsbook/amsart, which do strange things with \topskip +\def\@mkboth{\protect\markboth}% +\def\@oddhead{\@fancyhead\fancy@Oolh\f@ncyolh\f@ncyoch\f@ncyorh\fancy@Oorh}% +\def\@oddfoot{\@fancyfoot\fancy@Oolf\f@ncyolf\f@ncyocf\f@ncyorf\fancy@Oorf}% +\def\@evenhead{\@fancyhead\fancy@Oelh\f@ncyelh\f@ncyech\f@ncyerh\fancy@Oerh}% +\def\@evenfoot{\@fancyfoot\fancy@Oelf\f@ncyelf\f@ncyecf\f@ncyerf\fancy@Oerf}% +} +% Default definitions for compatibility mode: +% These cause the header/footer to take the defined \headwidth as width +% And to shift in the direction of the marginpar area + +\def\fancy@Oolh{\if@reversemargin\hss\else\relax\fi} +\def\fancy@Oorh{\if@reversemargin\relax\else\hss\fi} +\let\fancy@Oelh\fancy@Oorh +\let\fancy@Oerh\fancy@Oolh + +\let\fancy@Oolf\fancy@Oolh +\let\fancy@Oorf\fancy@Oorh +\let\fancy@Oelf\fancy@Oelh +\let\fancy@Oerf\fancy@Oerh + +% New definitions for the use of \fancyhfoffset +% These calculate the \headwidth from \textwidth and the specified offsets. + +\def\fancy@offsolh{\headwidth=\textwidth\advance\headwidth\f@ncyO@olh + \advance\headwidth\f@ncyO@orh\hskip-\f@ncyO@olh} +\def\fancy@offselh{\headwidth=\textwidth\advance\headwidth\f@ncyO@elh + \advance\headwidth\f@ncyO@erh\hskip-\f@ncyO@elh} + +\def\fancy@offsolf{\headwidth=\textwidth\advance\headwidth\f@ncyO@olf + \advance\headwidth\f@ncyO@orf\hskip-\f@ncyO@olf} +\def\fancy@offself{\headwidth=\textwidth\advance\headwidth\f@ncyO@elf + \advance\headwidth\f@ncyO@erf\hskip-\f@ncyO@elf} + +\def\fancy@setoffs{% +% Just in case \let\headwidth\textwidth was used + \fancy@gbl\let\headwidth\fancy@headwidth + \fancy@gbl\let\fancy@Oolh\fancy@offsolh + \fancy@gbl\let\fancy@Oelh\fancy@offselh + \fancy@gbl\let\fancy@Oorh\hss + \fancy@gbl\let\fancy@Oerh\hss + \fancy@gbl\let\fancy@Oolf\fancy@offsolf + \fancy@gbl\let\fancy@Oelf\fancy@offself + \fancy@gbl\let\fancy@Oorf\hss + \fancy@gbl\let\fancy@Oerf\hss} + +\newif\iffootnote +\let\latex@makecol\@makecol +\def\@makecol{\ifvoid\footins\footnotetrue\else\footnotefalse\fi +\let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol} +\def\iftopfloat#1#2{\ifx\topfloat\empty #2\else #1\fi} +\def\ifbotfloat#1#2{\ifx\botfloat\empty #2\else #1\fi} +\def\iffloatpage#1#2{\if@fcolmade #1\else #2\fi} + +\newcommand{\fancypagestyle}[2]{% + \@namedef{ps@#1}{\let\fancy@gbl\relax#2\relax\ps@fancy}} diff --git a/vu-cs-standard-thesis/footmisc.sty b/vu-cs-standard-thesis/footmisc.sty new file mode 100644 index 0000000..137599c --- /dev/null +++ b/vu-cs-standard-thesis/footmisc.sty @@ -0,0 +1,866 @@ +%% +%% This is file `footmisc.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% footmisc.dtx (with options: `package') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from footmisc.sty. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file footmisc.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% This is footmisc.dtx, and it's -*-LaTeX-*- text +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{footmisc}% + [2005/03/17 v5.3d + a miscellany of footnote facilities% + ]% $Id: footmisc.dtx,v 4.20 2005/03/17 13:41:58 rf Exp rf $ +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +\newtoks\FN@temptoken +\providecommand\protected@writeaux{% + \protected@write\@auxout +}% \end{macrocode} +\def\l@advance@macro{\@@dvance@macro\edef} +\def\@@dvance@macro#1#2#3{\expandafter\@tempcnta#2\relax + \advance\@tempcnta#3\relax + #1#2{\the\@tempcnta}% +} +\let\@advance@macro\l@advance@macro +\newif\ifFN@etex +\ifx\dimexpr\undefined + \FN@etexfalse +\else + \FN@etextrue +\fi +\newdimen\footnotemargin +\footnotemargin1.8em\relax +\DeclareOption{symbol}{\renewcommand\thefootnote{\fnsymbol{footnote}}} +\DeclareOption{symbol*}{% + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \AtEndOfPackage{\setfnsymbol{lamport*-robust}}% +} +\newif\ifFN@para \FN@parafalse +\DeclareOption{para}{\ifFN@sidefn + \PackageError{footmisc}{Option "\CurrentOption" incompatible with + option "side"}% + {I shall ignore "\CurrentOption"}% + \else + \FN@paratrue + \fi +} +\newif\ifFN@sidefn \FN@sidefnfalse +\DeclareOption{side}{\ifFN@para + \PackageError{footmisc}{Option "\CurrentOption" incompatible with + option "para"}% + {I shall ignore "\CurrentOption"}% + \else + \FN@sidefntrue + \fi +} +\let\footnotelayout\relax +\DeclareOption{ragged}{% + \@ifundefined{RaggedRight}% + {\def\footnotelayout{\linepenalty50 \raggedright}}% + {\def\footnotelayout{\linepenalty50 \RaggedRight}}% +} +\newif\ifFN@perpage +\FN@perpagefalse +\DeclareOption{perpage}{% + \FN@perpagetrue +} +\newif\ifFN@bottom \FN@bottomfalse +\DeclareOption{bottom}{% + \FN@bottomtrue +} +\DeclareOption{marginal}{% + \footnotemargin-0.8em\relax +} +\DeclareOption{flushmargin}{% + \footnotemargin0pt\relax +} +\newif\ifFN@hangfoot \FN@hangfootfalse +\DeclareOption{hang}{% + \FN@hangfoottrue +} +\newcommand*\hangfootparskip{0.5\baselineskip} +\newcommand*\hangfootparindent{0em}% +\DeclareOption{norule}{% + \renewcommand\footnoterule{}% + \advance\skip\footins 4\p@\@plus2\p@\relax +} +\DeclareOption{splitrule}{% + \gdef\split@prev{0} + \let\pagefootnoterule\footnoterule + \let\mpfootnoterule\footnoterule + \def\splitfootnoterule{\kern-3\p@ \hrule \kern2.6\p@} + \def\footnoterule{\relax + \ifx \@listdepth\@mplistdepth + \mpfootnoterule + \else + \ifnum\split@prev=\z@ + \pagefootnoterule + \else + \splitfootnoterule + \fi + \xdef\split@prev{\the\insertpenalties}% + \fi + }% +} +\newif\ifFN@stablefootnote \FN@stablefootnotefalse +\DeclareOption{stable}{\FN@stablefootnotetrue} +\newif\ifFN@multiplefootnote \FN@multiplefootnotefalse +\DeclareOption{multiple}{\FN@multiplefootnotetrue} +\ProcessOptions +\let \if@tempswa \ifFN@bottom +\ifFN@para \@tempswatrue \fi +\if@tempswa + \@ifl@t@r\fmtversion{2003/12/01}{% + \CheckCommand*\@makecol{\ifvoid \footins + \setbox\@outputbox \box\@cclv + \else + \setbox\@outputbox \vbox{% + \boxmaxdepth\@maxdepth + \@tempdima\dp\@cclv + \unvbox\@cclv + \vskip \skip\footins + \color@begingroup + \normalcolor\footnoterule + \unvbox\footins + \color@endgroup + }% + \fi + \let \@elt \relax + \xdef\@freelist{\@freelist\@midlist}% + \global\let\@midlist\@empty + \@combinefloats + \ifvbox\@kludgeins + \@makespecialcolbox + \else + \setbox\@outputbox \vbox to\@colht{% + \@texttop \dimen@\dp\@outputbox + \unvbox\@outputbox + \vskip -\dimen@\@textbottom + }% + \fi + \global\maxdepth\@maxdepth + } + }{% + \@ifl@t@r\fmtversion{1999/12/01}{% + \CheckCommand*\@makecol{\ifvoid \footins + \setbox\@outputbox \box\@cclv + \else + \setbox\@outputbox \vbox{% + \boxmaxdepth\@maxdepth + \@tempdima\dp\@cclv + \unvbox\@cclv + \vskip \skip\footins + \color@begingroup + \normalcolor\footnoterule + \unvbox\footins + \color@endgroup + }% + \fi + \xdef\@freelist{\@freelist\@midlist}% + \global\let\@midlist\@empty + \@combinefloats + \ifvbox\@kludgeins + \@makespecialcolbox + \else + \setbox\@outputbox \vbox to\@colht{% + \@texttop \dimen@\dp\@outputbox + \unvbox\@outputbox + \vskip -\dimen@\@textbottom + }% + \fi + \global\maxdepth\@maxdepth + } + }{% + \CheckCommand*\@makecol{\ifvoid \footins + \setbox\@outputbox \box\@cclv + \else + \setbox\@outputbox \vbox{% + \boxmaxdepth\@maxdepth + \unvbox\@cclv + \vskip \skip\footins + \color@begingroup + \normalcolor\footnoterule + \unvbox\footins + \color@endgroup + }% + \fi + \xdef\@freelist{\@freelist\@midlist}% + \global\let\@midlist\@empty + \@combinefloats + \ifvbox\@kludgeins + \@makespecialcolbox + \else + \setbox\@outputbox \vbox to\@colht{% + \@texttop \dimen@\dp\@outputbox + \unvbox\@outputbox + \vskip -\dimen@\@textbottom + }% + \fi + \global\maxdepth\@maxdepth + } + } +} + \ifFN@para + \FN@temptoken{% + \toks@\expandafter{\the\toks@ + \vskip\skip\footins + \color@begingroup + \normalcolor\footnoterule + \global\setbox\FN@tempboxc\vbox{\makefootnoteparagraph}% + \unvbox\FN@tempboxc + \color@endgroup + }% + }% + \else + \FN@temptoken{% + \toks@\expandafter{\the\toks@ + \vskip\skip\footins + \color@begingroup + \normalcolor\footnoterule + \unvbox\footins + \color@endgroup + }% + }% + \fi + \ifFN@bottom + \toks@{\setbox\@outputbox \box\@cclv + \xdef\@freelist{\@freelist\@midlist}% + \global\let\@midlist\@empty + \@combinefloats + \ifvoid\footins + \else + \setbox\@outputbox \vbox\bgroup + \boxmaxdepth\@maxdepth + \unvbox\@outputbox + \vfill\relax + } + \the\FN@temptoken + \toks@\expandafter{\the\toks@\egroup\fi} + \else + \toks@{\ifvoid\footins + \setbox\@outputbox\box\@cclv + \else + \setbox\@outputbox \vbox\bgroup + \boxmaxdepth\@maxdepth + \unvbox\@cclv + } + \the\FN@temptoken + \toks@\expandafter{\the\toks@ + \egroup + \fi + \xdef\@freelist{\@freelist\@midlist}% + \global\let\@midlist\@empty + \@combinefloats + }% + \fi + \toks@\expandafter{\the\toks@ + \ifvbox\@kludgeins + \@makespecialcolbox + \else + \setbox\@outputbox \vbox to\@colht{% + \@texttop \dimen@\dp\@outputbox + \unvbox\@outputbox + \vskip -\dimen@\@textbottom + }% + \fi + \global\maxdepth\@maxdepth + } + \edef\@makecol{\the\toks@} +\fi +\newif\ifFN@setspace +\@ifpackageloaded{setspace}{% + \FN@setspacetrue + \CheckCommand\@footnotetext[1]{% + \insert\footins{% + \def\baselinestretch {\setspace@singlespace}% + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox + \floatingpenalty\@MM + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \@makefntext{\rule\z@\footnotesep + \ignorespaces#1\@finalstrut\strutbox + }% + \color@endgroup + }% + }% +}{% + \FN@setspacefalse + \@ifl@t@r\fmtversion{1997/12/01}{% + \CheckCommand\@footnotetext[1]{% + \insert\footins{% + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox + \floatingpenalty\@MM + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \@makefntext{\rule\z@\footnotesep + \ignorespaces#1\@finalstrut\strutbox + }% + \color@endgroup + }% + }% + }{% + \CheckCommand\@footnotetext[1]{% + \insert\footins{% + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox + \floatingpenalty\@MM + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel + {\csname p@footnote\endcsname\@thefnmark}% + \color@begingroup + \@makefntext{\rule\z@\footnotesep + \ignorespaces#1\@finalstrut\strutbox + } + \color@endgroup + }% + }% + }% +} +\ifFN@para + \renewcommand\@footnotetext[1]{% + \insert\footins{% + \ifFN@setspace + \def\baselinestretch {\setspace@singlespace}% + \fi + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox + \floatingpenalty\@MM + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}% + \color@begingroup + \setbox\FN@tempboxa=\hbox{% + \@makefntext{\ignorespaces#1\strut + \penalty-10\relax + \hskip\footglue + }% end of \@makefntext parameter + }% end of \hbox + \dp\FN@tempboxa=0pt + \ifFN@etex + \ht\FN@tempboxa=\dimexpr\wd\FN@tempboxa * + \footnotebaselineskip / \columnwidth\relax + \else + \ht\FN@tempboxa=\fudgefactor\wd\FN@tempboxa + \fi + \box\FN@tempboxa + \color@endgroup + }% + \FN@mf@prepare + } +\else + \ifFN@sidefn + \renewcommand\@footnotetext[1]{% + \marginpar{% + \ifFN@setspace + \def\baselinestretch {\setspace@singlespace}% + \fi + \reset@font\footnotesize + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \@makefntext{% + \ignorespaces#1% + }% + \color@endgroup + }% + \FN@mf@prepare + }% + \else + \renewcommand\@footnotetext[1]{% + \insert\footins{% + \ifFN@setspace + \def\baselinestretch {\setspace@singlespace}% + \fi + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox + \floatingpenalty\@MM + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep + \ignorespaces#1\@finalstrut\strutbox + }% + \color@endgroup + }% + \FN@mf@prepare + }% + \fi +\fi +\ifFN@para + \let\FN@tempboxa\@tempboxa + \newbox\FN@tempboxb + \newbox\FN@tempboxc + \newskip\footglue \footglue=1em plus.3em minus.3em + \long\def\@makefntext#1{\leavevmode + \@makefnmark\nobreak + \hskip.5em\relax#1% + } +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \newdimen\footnotebaselineskip + {% + \footnotesize + \global + \footnotebaselineskip=\normalbaselineskip + } + \ifFN@etex + \else + \@tempdima=\footnotebaselineskip \multiply\@tempdima by 1024 + \divide \@tempdima by \columnwidth \multiply\@tempdima by 64 + \xdef\fudgefactor{\strip@pt\@tempdima }% + \fi + \long\def\makefootnoteparagraph{\unvbox\footins \makehboxofhboxes + \setbox\FN@tempboxa=\hbox{\unhbox\FN@tempboxa \removehboxes} + \hsize\columnwidth + \@parboxrestore + \baselineskip=\footnotebaselineskip + \noindent + \rule{\z@}{\footnotesep}% + \unhbox\FN@tempboxa\par + } + \def\makehboxofhboxes{\setbox\FN@tempboxa=\hbox{}% + \loop + \setbox\FN@tempboxb=\lastbox + \ifhbox\FN@tempboxb + \setbox\FN@tempboxa=\hbox{\box\FN@tempboxb\unhbox\FN@tempboxa}% + \repeat + } + \def\removehboxes{\setbox\FN@tempboxa=\lastbox + \ifhbox + \FN@tempboxa{\removehboxes}% + \unhbox\FN@tempboxa + \fi + } +\fi +\newif\ifFN@pp@footnotehint +\newcounter{pp@next@reset}% +\newif\ifFN@pp@towrite +\FN@pp@towritefalse +\ifFN@perpage + \CheckCommand*\footnote{\@ifnextchar [%] + \@xfootnote + {% + \stepcounter\@mpfn \protected@xdef\@thefnmark{\thempfn}% + \@footnotemark \@footnotetext + }% + } + \renewcommand*\footnote{\@ifnextchar [%] + \@xfootnote + {% + \stepcounter\@mpfn \protected@xdef\@thefnmark{\thempfn}% + \FN@pp@footnote\@footnotemark + \ifFN@pp@towrite + \FN@pp@writetemp + \FN@pp@towritefalse + \fi + \@footnotetext + }% + } + \CheckCommand*\footnotemark{% + \@ifnextchar [%] + \@xfootnotemark + {% + \stepcounter{footnote}% + \protected@xdef\@thefnmark{\thefootnote}% + \@footnotemark + }% + } + \renewcommand*\footnotemark{% + \@ifnextchar [%] + \@xfootnotemark + {% + \stepcounter{footnote}% + \protected@xdef\@thefnmark{\thefootnote}% + \FN@pp@footnote\@footnotemark + \ifFN@pp@towrite + \FN@pp@writetemp + \FN@pp@towritefalse + \fi + }% + } + \gdef\FN@pp@initial@stab{\@addtoreset{footnote}{page}} + \AtBeginDocument{\FN@pp@initial@stab} + \newcounter{@fnserial} + \def\FN@pp@cpage{0} + \FN@pp@footnotehinttrue + \newcommand{\footnotehint}{% + \setcounter{footnote}{0}% + \protected@writeaux\relax{\protect\FN@pp@footnotehinttrue}% + \@tempcnta\c@@fnserial + \advance\@tempcnta\@ne + \global\c@pp@next@reset\@tempcnta + } + \AtBeginDocument{\protected@writeaux\relax{% + \protect\providecommand{\protect\FN@pp@footnotehinttrue}{}% + }% + } +\def\FN@pp@lastfoot{-1} + \newcommand{\FN@pp@footnote@aux}[2]{% + \ifnum\FN@pp@lastfoot<#1 + \ifFN@pp@footnotehint + \FN@pp@resetfn{#1}{#2}% + \FN@pp@footnotehintfalse + \else + \gdef\@tempa{#2}% + \ifx\@tempa\FN@pp@cpage + \else + \FN@pp@resetfn{#1}{#2}% + \fi + \fi + \def\FN@pp@lastfoot{#1}% + \fi + \global\let\FN@pp@initial@stab\relax + } + \newcommand{\FN@pp@resetfn}[2]{% + \gdef\FN@pp@cpage{#2}% + \expandafter\gdef + \csname FN@pp@next-\FN@pp@prev@foot\endcsname{#1}% + \def\FN@pp@prev@foot{#1}% + \expandafter\xdef + \csname FN@pp@next-\FN@pp@prev@foot\endcsname{\the\@MM}% + } + \newcommand{\FN@pp@prev@foot}{root} + \AtBeginDocument{\protected@writeaux\relax{% + \protect\providecommand{\protect\FN@pp@footnote@aux}[2]{}}% + \c@pp@next@reset\@ne + } + \AtEndDocument{\let\FN@pp@footnote@aux\FN@pp@footnote@endaux + \def\FN@pp@lastfoot{-1}% + \FN@pp@footnotehintfalse + \renewcommand{\FN@pp@prev@foot}{root} + } + \newcommand{\FN@pp@footnote@endaux}[2]{% + \ifnum\FN@pp@lastfoot<#1 + \ifFN@pp@footnotehint + \FN@pp@resetfn@end{#1}{#2}% + \FN@pp@footnotehintfalse + \else + \gdef\@tempa{#2}% + \ifx\@tempa\FN@pp@cpage + \else + \FN@pp@resetfn@end{#1}{#2}% + \fi + \fi + \def\FN@pp@lastfoot{#1}% + \fi + } + \newcommand{\FN@pp@resetfn@end}[2]{% + \def\@tempa{#1}% + \expandafter\ifx\csname FN@pp@next-\FN@pp@prev@foot\endcsname\@tempa% + \else + \@tempswatrue + \fi + \gdef\FN@pp@prev@foot{#1}% + \gdef\FN@pp@cpage{#2}% + } +\let\FN@pp@@clearpage\clearpage +\renewcommand{\clearpage}{\footnotehint\FN@pp@@clearpage} +\def\FN@pp@footnote{% + \if@minipage\else + \global\advance\c@@fnserial\@ne + \if@filesw + \xdef\FN@pp@writetemp{% + \noexpand\protected@writeaux\relax{% + \string\FN@pp@footnote@aux + {\the\c@@fnserial}{\noexpand\thepage}% + }% + }% + \FN@pp@towritetrue + \fi + \ifnum\c@pp@next@reset>\c@@fnserial + \else + \global\expandafter\csname c@\@mpfn\endcsname\@ne + \protected@xdef\@thefnmark{\thempfn}% + \expandafter\let\expandafter\@tempa + \csname FN@pp@next-\number\c@pp@next@reset\endcsname + \ifx\@tempa\relax + \global\c@pp@next@reset\@MM + \else + \global\c@pp@next@reset\@tempa + \fi + \fi + \fi +} +\fi +\ifFN@para +\else + \long\def\@makefntext#1{% + \ifFN@hangfoot + \bgroup + \setbox\@tempboxa\hbox{% + \ifdim\footnotemargin>0pt + \hb@xt@\footnotemargin{\@makefnmark\hss}% + \else + \@makefnmark + \fi + }% + \leftmargin\wd\@tempboxa + \rightmargin\z@ + \linewidth \columnwidth + \advance \linewidth -\leftmargin + \parshape \@ne \leftmargin \linewidth + \footnotesize + \parskip\hangfootparskip\relax + \parindent\hangfootparindent\relax + \@setpar{{\@@par}}% + \leavevmode + \llap{\box\@tempboxa}% + \else + \parindent1em + \noindent + \ifdim\footnotemargin>\z@ + \hb@xt@ \footnotemargin{\hss\@makefnmark}% + \else + \ifdim\footnotemargin=\z@ + \llap{\@makefnmark}% + \else + \llap{\hb@xt@ -\footnotemargin{\@makefnmark\hss}}% + \fi + \fi + \fi + \footnotelayout#1% + \ifFN@hangfoot + \par\egroup + \fi + } +\fi +\ifFN@multiplefootnote + \providecommand*{\multiplefootnotemarker}{3sp} + \providecommand*{\multfootsep}{,} + \CheckCommand*\@footnotemark{% + \leavevmode + \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi + \@makefnmark + \ifhmode\spacefactor\@x@sf\fi + \relax + } + \renewcommand*\@footnotemark{% + \leavevmode + \ifhmode + \edef\@x@sf{\the\spacefactor}% + \FN@mf@check + \nobreak + \fi + \@makefnmark + \ifFN@pp@towrite + \FN@pp@writetemp + \FN@pp@towritefalse + \fi + \FN@mf@prepare + \ifhmode\spacefactor\@x@sf\fi + \relax + } + \def\FN@mf@prepare{% + \kern-\multiplefootnotemarker + \kern\multiplefootnotemarker\relax + } + \def\FN@mf@check{% + \ifdim\lastkern=\multiplefootnotemarker\relax + \edef\@x@sf{\the\spacefactor}% + \unkern + \textsuperscript{\multfootsep}% + \spacefactor\@x@sf\relax + \fi + } +\else + \let\FN@mf@prepare\relax +\fi +\ifFN@stablefootnote +\let\FN@sf@@footnote\footnote +\def\footnote{\ifx\protect\@typeset@protect + \expandafter\FN@sf@@footnote + \else + \expandafter\FN@sf@gobble@opt + \fi +} +\edef\FN@sf@gobble@opt{\noexpand\protect + \expandafter\noexpand\csname FN@sf@gobble@opt \endcsname} +\expandafter\def\csname FN@sf@gobble@opt \endcsname{% + \@ifnextchar[%] + \FN@sf@gobble@twobracket + \@gobble +} +\def\FN@sf@gobble@twobracket[#1]#2{} +\let\FN@sf@@footnotemark\footnotemark +\def\footnotemark{\ifx\protect\@typeset@protect + \expandafter\FN@sf@@footnotemark + \else + \expandafter\FN@sf@gobble@optonly + \fi +} +\edef\FN@sf@gobble@optonly{\noexpand\protect + \expandafter\noexpand\csname FN@sf@gobble@optonly \endcsname} +\expandafter\def\csname FN@sf@gobble@optonly \endcsname{% + \@ifnextchar[%] + \FN@sf@gobble@bracket + {}% +} +\def\FN@sf@gobble@bracket[#1]{} +\fi +\newcommand\setfnsymbol[1]{% + \@bsphack + \@ifundefined{FN@fnsymbol@#1}% + {% + \PackageError{footmisc}{Symbol style "#1" not known}% + \@eha + }{% + \expandafter\let\expandafter\@fnsymbol\csname + FN@fnsymbol@#1\endcsname + }% + \@esphack +} +\let\FN@fnsymbol@lamport\@fnsymbol +\newif\if@tempswb +\newcommand{\DefineFNsymbols}{% + \@ifstar{\@tempswbtrue\@DefineFNsymbols}% + {\@tempswbfalse\@DefineFNsymbols}% +} +\newcommand{\@DefineFNsymbols}[1]{% + \@ifnextchar[% ] + {\@DefineFNsymbols@{#1}}{\@DefineFNsymbols@{#1}[math]}% +} +\def\@DefineFNsymbols@#1[#2]#3{% + \expandafter\ifx\csname FN@fnsymbol@#1\endcsname\relax + \PackageInfo{footmisc}{Declaring symbol style #1}% + \else + \PackageWarning{footmisc}{Redeclaring symbol style #1}% + \fi + \toks@{}% + \def\@tempb{\end}% + \FN@build@symboldef#3\end + \def\@tempc{math}% + \def\@tempd{#2}% + \expandafter\xdef\csname FN@fnsymbol@#1\endcsname##1{% + \ifx\@tempc\@tempd + \noexpand\ensuremath + \else + \noexpand\nfss@text + \fi + {% + \noexpand\ifcase##1% + \the\toks@ + \noexpand\else + \if@tempswb + \noexpand\@ctrerr + \else + \noexpand\@arabic##1\noexpand\FN@orange##1% + \fi + \noexpand\fi + }% + }% +} +\def\FN@build@symboldef#1{% + \def\@tempa{#1}% + \ifx\@tempa\@tempb + \else + \toks@\expandafter{\the\toks@\or#1}% + \expandafter\FN@build@symboldef + \fi +} +\def\FN@orange#1{% + \@bsphack + \PackageInfo{footmisc}{Footnote number \number#1 out of range}% + \protect\@fnsymbol@orange + \@esphack +} +\global\let\@diagnose@fnsymbol@orange\relax +\AtEndDocument{\@diagnose@fnsymbol@orange} +\def\@fnsymbol@orange{% + \gdef\@diagnose@fnsymbol@orange{% + \PackageWarningNoLine{footmisc}{Some footnote number(s) + were out of range + \MessageBreak + see log for details% + }% + }% +} +\DefineFNsymbols*{bringhurst}{*\dagger\ddagger\S\|\P}% +\DefineFNsymbols*{chicago}{*\dagger\ddagger\S\|\#}% +\DefineFNsymbols*{wiley}{*{**}\dagger\ddagger\S\P\|}% +\DefineFNsymbols{lamport-robust}{*\dagger\ddagger + \mathsection\mathparagraph\|% + {**}{\dagger\dagger}{\ddagger\ddagger}% +} +\DefineFNsymbols*{lamport*}{*\dagger\ddagger + \mathsection\mathparagraph\|% + {**}{\dagger\dagger}{\ddagger\ddagger}% + {\mathsection\mathsection}{\mathparagraph\mathparagraph}% + {*{*}*}{\dagger\dagger\dagger}{\ddagger\ddagger\ddagger}% + {\mathsection\mathsection\mathsection}% + {\mathparagraph\mathparagraph\mathparagraph}% +} +\setfnsymbol{lamport*} +\DefineFNsymbols{lamport*-robust}{*\dagger\ddagger + \mathsection\mathparagraph\|% + {**}{\dagger\dagger}{\ddagger\ddagger}% + {\mathsection\mathsection}{\mathparagraph\mathparagraph}% + {*{*}*}{\dagger\dagger\dagger}{\ddagger\ddagger\ddagger}% + {\mathsection\mathsection\mathsection}% + {\mathparagraph\mathparagraph\mathparagraph}% +} +\providecommand*{\footref}[1]{% + \begingroup + \unrestored@protected@xdef\@thefnmark{\ref{#1}}% + \endgroup + \@footnotemark +} +\newcommand\mpfootnotemark{% + \@ifnextchar[% + \@xmpfootnotemark + {% + \stepcounter\@mpfn + \protected@xdef\@thefnmark{\thempfn}% + \@footnotemark + }% +} +\def\@xmpfootnotemark[#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup + \@footnotemark +} +\endinput +%% +%% End of file `footmisc.sty'. + diff --git a/vu-cs-standard-thesis/listings.sty b/vu-cs-standard-thesis/listings.sty new file mode 100644 index 0000000..216dbb6 --- /dev/null +++ b/vu-cs-standard-thesis/listings.sty @@ -0,0 +1,2237 @@ +%% +%% This is file `listings.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% listings.dtx (with options: `kernel') +%% +%% Please read the software license in listings-1.3.dtx or listings-1.3.pdf. +%% +%% (w)(c) 1996--2004 Carsten Heinz and/or any other author listed +%% elsewhere in this file. +%% (c) 2006 Brooks Moses +%% +%% Send comments and ideas on the package, error reports and additional +%% programming languages to . +%% +\def\filedate{2007/02/22} +\def\fileversion{1.4} +\NeedsTeXFormat{LaTeX2e} +\AtEndOfPackage{\ProvidesPackage{listings} + [\filedate\space\fileversion\space(Carsten Heinz)]} +\def\lst@CheckVersion#1{\edef\reserved@a{#1}% + \ifx\lst@version\reserved@a \expandafter\@gobble + \else \expandafter\@firstofone \fi} +\let\lst@version\fileversion +\def\lst@InputCatcodes{% + \makeatletter \catcode`\"12% + \catcode`\^^@\active + \catcode`\^^I9% + \catcode`\^^L9% + \catcode`\^^M9% + \catcode`\%14% + \catcode`\~\active} +\def\lst@RestoreCatcodes#1{% + \ifx\relax#1\else + \noexpand\catcode`\noexpand#1\the\catcode`#1\relax + \expandafter\lst@RestoreCatcodes + \fi} +\edef\lst@RestoreCatcodes{% + \noexpand\lccode`\noexpand\/`\noexpand\/% + \lst@RestoreCatcodes\"\^^I\^^M\~\^^@\relax + \catcode12\active} +\lst@InputCatcodes +\AtEndOfPackage{\lst@RestoreCatcodes} +\def\@lst{lst} +\def\lst@IfSubstring#1#2{% + \def\lst@temp##1#1##2##3\relax{% + \ifx \@empty##2\expandafter\@secondoftwo + \else \expandafter\@firstoftwo \fi}% + \expandafter\lst@temp#2#1\@empty\relax} +\def\lst@IfOneOf#1\relax#2{% + \def\lst@temp##1,#1,##2##3\relax{% + \ifx \@empty##2\expandafter\@secondoftwo + \else \expandafter\@firstoftwo \fi}% + \expandafter\lst@temp\expandafter,#2,#1,\@empty\relax} +\def\lst@DeleteKeysIn#1#2{% + \expandafter\lst@DeleteKeysIn@\expandafter#1#2,\relax,} +\def\lst@DeleteKeysIn@#1#2,{% + \ifx\relax#2\@empty + \expandafter\@firstoftwo\expandafter\lst@RemoveCommas + \else + \ifx\@empty#2\@empty\else + \def\lst@temp##1,#2,##2{% + ##1% + \ifx\@empty##2\@empty\else + \expandafter\lst@temp\expandafter,% + \fi ##2}% + \edef#1{\expandafter\lst@temp\expandafter,#1,#2,\@empty}% + \fi + \fi + \lst@DeleteKeysIn@#1} +\def\lst@RemoveCommas#1{\edef#1{\expandafter\lst@RC@#1\@empty}} +\def\lst@RC@#1{\ifx,#1\expandafter\lst@RC@ \else #1\fi} +\def\lst@ReplaceIn#1#2{% + \expandafter\lst@ReplaceIn@\expandafter#1#2\@empty\@empty} +\def\lst@ReplaceInArg#1#2{\lst@ReplaceIn@#1#2\@empty\@empty} +\def\lst@ReplaceIn@#1#2#3{% + \ifx\@empty#3\relax\else + \def\lst@temp##1#2##2{% + \ifx\@empty##2% + \lst@lAddTo#1{##1}% + \else + \lst@lAddTo#1{##1#3}\expandafter\lst@temp + \fi ##2}% + \let\@tempa#1\let#1\@empty + \expandafter\lst@temp\@tempa#2\@empty + \expandafter\lst@ReplaceIn@\expandafter#1% + \fi} +\providecommand*\@gobblethree[3]{} +\def\lst@GobbleNil#1\@nil{} +\def\lst@Swap#1#2{#2#1} +\def\lst@true{\let\lst@if\iftrue} +\def\lst@false{\let\lst@if\iffalse} +\lst@false +\def\lst@IfNextCharsArg#1{% + \def\lst@tofind{#1}\lst@IfNextChars\lst@tofind} +\def\lst@IfNextChars#1#2#3{% + \let\lst@tofind#1\def\@tempa{#2}\def\@tempb{#3}% + \let\lst@eaten\@empty \lst@IfNextChars@} +\def\lst@IfNextChars@{\expandafter\lst@IfNextChars@@\lst@tofind\relax} +\def\lst@IfNextChars@@#1#2\relax#3{% + \def\lst@tofind{#2}\lst@lAddTo\lst@eaten{#3}% + \ifx#1#3% + \ifx\lst@tofind\@empty + \let\lst@next\@tempa + \else + \let\lst@next\lst@IfNextChars@ + \fi + \expandafter\lst@next + \else + \expandafter\@tempb + \fi} +\def\lst@IfNextCharActive#1#2#3{% + \begingroup \lccode`\~=`#3\lowercase{\endgroup + \ifx~}#3% + \def\lst@next{#1}% + \else + \def\lst@next{#2}% + \fi \lst@next #3} +\def\lst@for#1\do#2{% + \def\lst@forbody##1{#2}% + \def\@tempa{#1}% + \ifx\@tempa\@empty\else\expandafter\lst@f@r#1,\@nil,\fi +} +\def\lst@f@r#1,{% + \def\@tempa{#1}% + \ifx\@tempa\@nnil\else\lst@forbody{#1}\expandafter\lst@f@r\fi +} +\def\lst@MakeActive#1{% + \let\lst@temp\@empty \lst@MakeActive@#1% + \relax\relax\relax\relax\relax\relax\relax\relax\relax} +\begingroup +\catcode`\^^@=\active \catcode`\^^A=\active \catcode`\^^B=\active +\catcode`\^^C=\active \catcode`\^^D=\active \catcode`\^^E=\active +\catcode`\^^F=\active \catcode`\^^G=\active \catcode`\^^H=\active +\gdef\lst@MakeActive@#1#2#3#4#5#6#7#8#9{\let\lst@next\relax + \ifx#1\relax + \else \lccode`\^^@=`#1% + \ifx#2\relax + \lowercase{\lst@lAddTo\lst@temp{^^@}}% + \else \lccode`\^^A=`#2% + \ifx#3\relax + \lowercase{\lst@lAddTo\lst@temp{^^@^^A}}% + \else \lccode`\^^B=`#3% + \ifx#4\relax + \lowercase{\lst@lAddTo\lst@temp{^^@^^A^^B}}% + \else \lccode`\^^C=`#4% + \ifx#5\relax + \lowercase{\lst@lAddTo\lst@temp{^^@^^A^^B^^C}}% + \else \lccode`\^^D=`#5% + \ifx#6\relax + \lowercase{\lst@lAddTo\lst@temp{^^@^^A^^B^^C^^D}}% + \else \lccode`\^^E=`#6% + \ifx#7\relax + \lowercase{\lst@lAddTo\lst@temp{^^@^^A^^B^^C^^D^^E}}% + \else \lccode`\^^F=`#7% + \ifx#8\relax + \lowercase{\lst@lAddTo\lst@temp{^^@^^A^^B^^C^^D^^E^^F}}% + \else \lccode`\^^G=`#8% + \ifx#9\relax + \lowercase{\lst@lAddTo\lst@temp{^^@^^A^^B^^C^^D^^E^^F^^G}}% + \else \lccode`\^^H=`#9% + \lowercase{\lst@lAddTo\lst@temp{^^@^^A^^B^^C^^D^^E^^F^^G^^H}}% + \let\lst@next\lst@MakeActive@ + \fi \fi \fi \fi \fi \fi \fi \fi \fi + \lst@next} +\endgroup +\def\lst@DefActive#1#2{\lst@MakeActive{#2}\let#1\lst@temp} +\def\lst@DefOther#1#2{% + \begingroup \def#1{#2}\escapechar\m@ne \expandafter\endgroup + \expandafter\lst@DefOther@\meaning#1\relax#1} +\def\lst@DefOther@#1>#2\relax#3{\edef#3{\zap@space#2 \@empty}} +\def\lst@InsideConvert#1{% + \lst@ifmathescape + \lst@InsideConvert@e#1$\@nil + \lst@if + \lst@InsideConvert@ey#1\@nil + \else + \lst@InsideConvert@#1 \@empty + \expandafter\@gobbletwo + \fi + \expandafter\lst@next + \else + \lst@InsideConvert@#1 \@empty + \fi} +\begingroup \lccode`\~=`\ \relax \lowercase{% +\gdef\lst@InsideConvert@#1 #2{% + \lst@MakeActive{#1}% + \ifx\@empty#2% + \lst@lExtend\lst@arg{\lst@temp}% + \else + \lst@lExtend\lst@arg{\lst@temp~}% + \expandafter\lst@InsideConvert@ + \fi #2} +}\endgroup +\def\lst@InsideConvert@e#1$#2\@nil{% + \ifx\@empty#2\@empty \lst@false \else \lst@true \fi} +\def\lst@InsideConvert@ey#1$#2$#3\@nil{% + \lst@InsideConvert@#1 \@empty + \lst@lAddTo\lst@arg{% + \lst@ifdropinput\else + \lst@TrackNewLines\lst@OutputLostSpace \lst@XPrintToken + \setbox\@tempboxa=\hbox\bgroup$\lst@escapebegin + #2% + \lst@escapeend$\egroup \lst@CalcLostSpaceAndOutput + \lst@whitespacefalse + \fi}% + \def\lst@next{\lst@InsideConvert{#3}}% +} +\def\lst@XConvert{\@ifnextchar\bgroup \lst@XConvertArg\lst@XConvert@} +\def\lst@XConvertArg#1{% + {\lst@false \let\lst@arg\@empty + \lst@XConvert#1\@nil + \global\let\@gtempa\lst@arg}% + \lst@lExtend\lst@arg{\expandafter{\@gtempa}}% + \lst@XConvertNext} +\def\lst@XConvert@#1{% + \ifx\@nil#1\else + \begingroup\lccode`\~=`#1\lowercase{\endgroup + \lst@lAddTo\lst@arg~}% + \expandafter\lst@XConvertNext + \fi} +\def\lst@XConvertNext{% + \lst@if \expandafter\lst@XConvertX + \else \expandafter\lst@XConvert \fi} +\def\lst@XConvertX#1{% + \ifx\@nil#1\else + \lst@XConvertX@#1\relax + \expandafter\lst@XConvert + \fi} +\def\lst@XConvertX@#1#2\relax{% + \begingroup\lccode`\~=`#1\lowercase{\endgroup + \lst@XCConvertX@@~}{#2}} +\def\lst@XCConvertX@@#1#2{\lst@lAddTo\lst@arg{{#1#2}}} +\def\lst@Require#1#2#3#4#5{% + \begingroup + \aftergroup\lst@true + \ifx\@empty#3\@empty\else + \def\lst@prefix{#2}\let\lst@require\@empty + \edef\lst@temp{\expandafter\zap@space#3 \@empty}% + \lst@for\lst@temp\do{% + \ifx\@empty##1\@empty\else \lstKV@OptArg[]{##1}{% + #4[####1]{####2}% + \@ifundefined{\@lst\lst@prefix @\lst@malias $\lst@oalias}% + {\edef\lst@require{\lst@require,\lst@malias $\lst@oalias}}% + {}}% + \fi}% + \global\let\lst@loadaspects\@empty + \lst@InputCatcodes + \ifx\lst@require\@empty\else + \lst@for{#5}\do{% + \ifx\lst@require\@empty\else + \InputIfFileExists{##1}{}{}% + \fi}% + \fi + \ifx\lst@require\@empty\else + \PackageError{Listings}{Couldn't load requested #1}% + {The following #1s weren't loadable:^^J\@spaces + \lst@require^^JThis may cause errors in the sequel.}% + \aftergroup\lst@false + \fi + \ifx\lst@loadaspects\@empty\else + \lst@RequireAspects\lst@loadaspects + \fi + \fi + \endgroup} +\def\lst@IfRequired[#1]#2{% + \lst@NormedDef\lst@temp{[#1]#2}% + \expandafter\lst@IfRequired@\lst@temp\relax} +\def\lst@IfRequired@[#1]#2\relax#3{% + \lst@IfOneOf #2$#1\relax\lst@require + {\lst@DeleteKeysIn@\lst@require#2$#1,\relax,% + \global\expandafter\let + \csname\@lst\lst@prefix @#2$#1\endcsname\@empty + #3}} +\let\lst@require\@empty +\def\lst@NoAlias[#1]#2{% + \lst@NormedDef\lst@oalias{#1}\lst@NormedDef\lst@malias{#2}} +\gdef\lst@LAS#1#2#3#4#5#6#7{% + \lst@Require{#1}{#2}{#3}#4#5% + #4#3% + \@ifundefined{lst#2@\lst@malias$\lst@oalias}% + {\PackageError{Listings}% + {#1 \ifx\@empty\lst@oalias\else \lst@oalias\space of \fi + \lst@malias\space undefined}% + {The #1 is not loadable. \@ehc}}% + {#6\csname\@lst#2@\lst@malias $\lst@oalias\endcsname #7}} +\def\lst@RequireAspects#1{% + \lst@Require{aspect}{asp}{#1}\lst@NoAlias\lstaspectfiles} +\let\lstloadaspects\lst@RequireAspects +\@ifundefined{lstaspectfiles} + {\newcommand\lstaspectfiles{lstmisc0.sty,lstmisc.sty}}{} +\gdef\lst@DefDriver#1#2#3#4{% + \@ifnextchar[{\lst@DefDriver@{#1}{#2}#3#4}% + {\lst@DefDriver@{#1}{#2}#3#4[]}} +\gdef\lst@DefDriver@#1#2#3#4[#5]#6{% + \def\lst@name{#1}\let\lst@if#4% + \lst@NormedDef\lst@driver{\@lst#2@#6$#5}% + \lst@IfRequired[#5]{#6}{\begingroup \lst@true}% + {\begingroup}% + \lst@setcatcodes + \@ifnextchar[{\lst@XDefDriver{#1}#3}{\lst@DefDriver@@#3}} +\gdef\lst@DefDriver@@#1#2{% + \lst@if + \global\@namedef{\lst@driver}{#1{#2}}% + \fi + \endgroup + \@ifnextchar[\lst@XXDefDriver\@empty} +\gdef\lst@XXDefDriver[#1]{% + \ifx\@empty#1\@empty\else + \lst@if + \lstloadaspects{#1}% + \else + \@ifundefined{\lst@driver}{}% + {\xdef\lst@loadaspects{\lst@loadaspects,#1}}% + \fi + \fi} +\gdef\lst@XDefDriver#1#2[#3]#4#5{\lst@DefDriver@@#2{also#1=[#3]#4,#5}} +\let\lst@UserCommand\gdef +\newcommand*\lst@BeginAspect[2][]{% + \def\lst@curraspect{#2}% + \ifx \lst@curraspect\@empty + \expandafter\lst@GobbleAspect + \else + \let\lst@next\@empty + \lst@IfRequired[]{#2}% + {\lst@RequireAspects{#1}% + \lst@if\else \let\lst@next\lst@GobbleAspect \fi}% + {\let\lst@next\lst@GobbleAspect}% + \expandafter\lst@next + \fi} +\def\lst@EndAspect{% + \csname\@lst patch@\lst@curraspect\endcsname + \let\lst@curraspect\@empty} +\long\def\lst@GobbleAspect#1\lst@EndAspect{\let\lst@curraspect\@empty} +\def\lst@Key#1#2{% + \@ifnextchar[{\lstKV@def{#1}{#2}}% + {\def\lst@temp{\lst@Key@{#1}{#2}} + \afterassignment\lst@temp + \global\@namedef{KV@\@lst @#1}####1}} +\def\lstKV@def#1#2[#3]{% + \global\@namedef{KV@\@lst @#1@default\expandafter}\expandafter + {\csname KV@\@lst @#1\endcsname{#3}}% + \def\lst@temp{\lst@Key@{#1}{#2}}\afterassignment\lst@temp + \global\@namedef{KV@\@lst @#1}##1} +\def\lst@Key@#1#2{% + \ifx\relax#2\@empty\else + \begingroup \globaldefs\@ne + \csname KV@\@lst @#1\endcsname{#2}% + \endgroup + \fi} +\def\lst@UseHook#1{\csname\@lst hk@#1\endcsname} +\def\lst@AddToHook{\lst@ATH@\iffalse\lst@AddTo} +\def\lst@AddToHookExe{\lst@ATH@\iftrue\lst@AddTo} +\def\lst@AddToHookAtTop{\lst@ATH@\iffalse\lst@AddToAtTop} +\long\def\lst@ATH@#1#2#3#4{% + \@ifundefined{\@lst hk@#3}{% + \expandafter\gdef\csname\@lst hk@#3\endcsname{}}{}% + \expandafter#2\csname\@lst hk@#3\endcsname{#4}% + \def\lst@temp{#4}% + #1% \iftrue|false + \begingroup \globaldefs\@ne \lst@temp \endgroup + \fi} +\long\def\lst@AddTo#1#2{% + \expandafter\gdef\expandafter#1\expandafter{#1#2}} +\def\lst@AddToAtTop#1#2{\def\lst@temp{#2}% + \expandafter\expandafter\expandafter\gdef + \expandafter\expandafter\expandafter#1% + \expandafter\expandafter\expandafter{\expandafter\lst@temp#1}} +\def\lst@lAddTo#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}} +\def\lst@Extend#1#2{% + \expandafter\lst@AddTo\expandafter#1\expandafter{#2}} +\def\lst@lExtend#1#2{% + \expandafter\lst@lAddTo\expandafter#1\expandafter{#2}} +\RequirePackage{keyval}[1997/11/10] +\def\lstKV@TwoArg#1#2{\gdef\@gtempa##1##2{#2}\@gtempa#1{}{}} +\def\lstKV@ThreeArg#1#2{\gdef\@gtempa##1##2##3{#2}\@gtempa#1{}{}{}} +\def\lstKV@FourArg#1#2{\gdef\@gtempa##1##2##3##4{#2}\@gtempa#1{}{}{}{}} +\def\lstKV@OptArg[#1]#2#3{% + \gdef\@gtempa[##1]##2{#3}\lstKV@OptArg@{#1}#2\@} +\def\lstKV@OptArg@#1{\@ifnextchar[\lstKV@OptArg@@{\lstKV@OptArg@@[#1]}} +\def\lstKV@OptArg@@[#1]#2\@{\@gtempa[#1]{#2}} +\def\lstKV@XOptArg[#1]#2#3{% + \global\let\@gtempa#3\lstKV@OptArg@{#1}#2\@} +\def\lstKV@CSTwoArg#1#2{% + \gdef\@gtempa##1,##2,##3\relax{#2}% + \@gtempa#1,,\relax} +\def\lstKV@SetIf#1{\lstKV@SetIf@#1\relax} +\def\lstKV@SetIf@#1#2\relax#3{\lowercase{% + \expandafter\let\expandafter#3% + \csname if\ifx #1t}true\else false\fi\endcsname} +\def\lstKV@SwitchCases#1#2#3{% + \def\lst@temp##1\\#1&##2\\##3##4\@nil{% + \ifx\@empty##3% + #3% + \else + ##2% + \fi + }% + \lst@temp\\#2\\#1&\\\@empty\@nil} +\lst@UserCommand\lstset{\begingroup \lst@setcatcodes \lstset@} +\def\lstset@#1{\endgroup \ifx\@empty#1\@empty\else\setkeys{lst}{#1}\fi} +\def\lst@setcatcodes{\makeatletter \catcode`\==12\relax} +\def\lst@NewMode#1{% + \ifx\@undefined#1% + \lst@mode\lst@newmode\relax \advance\lst@mode\@ne + \xdef\lst@newmode{\the\lst@mode}% + \global\chardef#1=\lst@mode + \lst@mode\lst@nomode + \fi} +\newcount\lst@mode +\def\lst@newmode{\m@ne}% init +\lst@NewMode\lst@nomode % init (of \lst@mode :-) +\def\lst@UseDynamicMode{% + \@tempcnta\lst@dynamicmode\relax \advance\@tempcnta\@ne + \edef\lst@dynamicmode{\the\@tempcnta}% + \expandafter\lst@Swap\expandafter{\expandafter{\lst@dynamicmode}}} +\lst@AddToHook{InitVars}{\let\lst@dynamicmode\lst@newmode} +\def\lst@EnterMode#1#2{% + \bgroup \lst@mode=#1\relax #2% + \lst@FontAdjust + \lst@lAddTo\lst@entermodes{\lst@EnterMode{#1}{#2}}} +\lst@AddToHook{InitVars}{\let\lst@entermodes\@empty} +\let\lst@entermodes\@empty % init +\def\lst@LeaveMode{% + \ifnum\lst@mode=\lst@nomode\else + \egroup \expandafter\lsthk@EndGroup + \fi} +\lst@AddToHook{EndGroup}{}% init +\def\lst@InterruptModes{% + \lst@Extend\lst@modestack{\expandafter{\lst@entermodes}}% + \lst@LeaveAllModes} +\lst@AddToHook{InitVars}{\global\let\lst@modestack\@empty} +\def\lst@ReenterModes{% + \ifx\lst@modestack\@empty\else + \lst@LeaveAllModes + \global\let\@gtempa\lst@modestack + \global\let\lst@modestack\@empty + \expandafter\lst@ReenterModes@\@gtempa\relax + \fi} +\def\lst@ReenterModes@#1#2{% + \ifx\relax#2\@empty + \gdef\@gtempa##1{#1}% + \expandafter\@gtempa + \else + \lst@AddTo\lst@modestack{{#1}}% + \expandafter\lst@ReenterModes@ + \fi + {#2}} +\def\lst@LeaveAllModes{% + \ifnum\lst@mode=\lst@nomode + \expandafter\lsthk@EndGroup + \else + \expandafter\egroup\expandafter\lst@LeaveAllModes + \fi} +\lst@AddToHook{ExitVars}{\lst@LeaveAllModes} +\lst@NewMode\lst@Pmode +\lst@NewMode\lst@GPmode +\def\lst@modetrue{\let\lst@ifmode\iftrue \lsthk@ModeTrue} +\let\lst@ifmode\iffalse % init +\lst@AddToHook{ModeTrue}{}% init +\def\lst@Lmodetrue{\let\lst@ifLmode\iftrue} +\let\lst@ifLmode\iffalse % init +\lst@AddToHook{EOL}{\@whilesw \lst@ifLmode\fi \lst@LeaveMode} +\def\lst@NormedDef#1#2{\lowercase{\edef#1{\zap@space#2 \@empty}}} +\def\lst@NormedNameDef#1#2{% + \lowercase{\edef\lst@temp{\zap@space#1 \@empty}% + \expandafter\xdef\csname\lst@temp\endcsname{\zap@space#2 \@empty}}} +\def\lst@GetFreeMacro#1{% + \@tempcnta\z@ \def\lst@freemacro{#1\the\@tempcnta}% + \lst@GFM@} +\def\lst@GFM@{% + \expandafter\ifx \csname\lst@freemacro\endcsname \relax + \edef\lst@freemacro{\csname\lst@freemacro\endcsname}% + \else + \advance\@tempcnta\@ne + \expandafter\lst@GFM@ + \fi} +\newbox\lst@gtempboxa +\newtoks\lst@token \newcount\lst@length +\def\lst@ResetToken{\lst@token{}\lst@length\z@} +\lst@AddToHook{InitVarsBOL}{\lst@ResetToken \let\lst@lastother\@empty} +\lst@AddToHook{EndGroup}{\lst@ResetToken \let\lst@lastother\@empty} +\def\lst@lettertrue{\let\lst@ifletter\iftrue} +\def\lst@letterfalse{\let\lst@ifletter\iffalse} +\lst@AddToHook{InitVars}{\lst@letterfalse} +\def\lst@Append#1{\advance\lst@length\@ne + \lst@token=\expandafter{\the\lst@token#1}} +\def\lst@AppendOther{% + \lst@ifletter \lst@Output\lst@letterfalse \fi + \futurelet\lst@lastother\lst@Append} +\def\lst@AppendLetter{% + \lst@ifletter\else \lst@OutputOther\lst@lettertrue \fi + \lst@Append} +\def\lst@SaveToken{% + \global\let\lst@gthestyle\lst@thestyle + \global\let\lst@glastother\lst@lastother + \xdef\lst@RestoreToken{\noexpand\lst@token{\the\lst@token}% + \noexpand\lst@length\the\lst@length\relax + \noexpand\let\noexpand\lst@thestyle + \noexpand\lst@gthestyle + \noexpand\let\noexpand\lst@lastother + \noexpand\lst@glastother}} +\def\lst@IfLastOtherOneOf#1{\lst@IfLastOtherOneOf@ #1\relax} +\def\lst@IfLastOtherOneOf@#1{% + \ifx #1\relax + \expandafter\@secondoftwo + \else + \ifx\lst@lastother#1% + \lst@IfLastOtherOneOf@t + \else + \expandafter\expandafter\expandafter\lst@IfLastOtherOneOf@ + \fi + \fi} +\def\lst@IfLastOtherOneOf@t#1\fi\fi#2\relax{\fi\fi\@firstoftwo} +\newdimen\lst@currlwidth % \global +\newcount\lst@column \newcount\lst@pos % \global +\lst@AddToHook{InitVarsBOL} + {\global\lst@currlwidth\z@ \global\lst@pos\z@ \global\lst@column\z@} +\def\lst@CalcColumn{% + \@tempcnta\lst@column + \advance\@tempcnta\lst@length + \advance\@tempcnta-\lst@pos} +\newdimen\lst@lostspace % \global +\lst@AddToHook{InitVarsBOL}{\global\lst@lostspace\z@} +\def\lst@UseLostSpace{\ifdim\lst@lostspace>\z@ \lst@InsertLostSpace \fi} +\def\lst@InsertLostSpace{% + \lst@Kern\lst@lostspace \global\lst@lostspace\z@} +\def\lst@InsertHalfLostSpace{% + \global\lst@lostspace.5\lst@lostspace \lst@Kern\lst@lostspace} +\newdimen\lst@width +\lst@Key{basewidth}{0.6em,0.45em}{\lstKV@CSTwoArg{#1}% + {\def\lst@widthfixed{##1}\def\lst@widthflexible{##2}% + \ifx\lst@widthflexible\@empty + \let\lst@widthflexible\lst@widthfixed + \fi + \def\lst@temp{\PackageError{Listings}% + {Negative value(s) treated as zero}% + \@ehc}% + \let\lst@error\@empty + \ifdim \lst@widthfixed<\z@ + \let\lst@error\lst@temp \let\lst@widthfixed\z@ + \fi + \ifdim \lst@widthflexible<\z@ + \let\lst@error\lst@temp \let\lst@widthflexible\z@ + \fi + \lst@error}} +\lst@AddToHook{FontAdjust} + {\lst@width=\lst@ifflexible\lst@widthflexible + \else\lst@widthfixed\fi \relax} +\lst@Key{fontadjust}{false}[t]{\lstKV@SetIf{#1}\lst@iffontadjust} +\def\lst@FontAdjust{\lst@iffontadjust \lsthk@FontAdjust \fi} +\lst@AddToHook{InitVars}{\lsthk@FontAdjust} +\def\lst@OutputBox#1{\lst@alloverstyle{\box#1}} +\def\lst@alloverstyle#1{#1}% init +\def\lst@Kern#1{% + \setbox\z@\hbox{{\lst@currstyle{\kern#1}}}% + \global\advance\lst@currlwidth \wd\z@ + \lst@OutputBox\z@} +\def\lst@CalcLostSpaceAndOutput{% + \global\advance\lst@lostspace \lst@length\lst@width + \global\advance\lst@lostspace-\wd\@tempboxa + \global\advance\lst@currlwidth \wd\@tempboxa + \global\advance\lst@pos -\lst@length + \setbox\@tempboxa\hbox{\let\lst@OutputBox\box + \ifdim\lst@lostspace>\z@ \lst@leftinsert \fi + \box\@tempboxa + \ifdim\lst@lostspace>\z@ \lst@rightinsert \fi}% + \lst@OutputBox\@tempboxa \lsthk@PostOutput} +\lst@AddToHook{PostOutput}{}% init +\def\lst@OutputToken{% + \lst@TrackNewLines \lst@OutputLostSpace + \lst@ifgobbledws + \lst@gobbledwhitespacefalse + \lst@@discretionary + \fi + \lst@CheckMerge + {\lst@thestyle{\lst@FontAdjust + \setbox\@tempboxa\lst@hbox + {\lsthk@OutputBox + \lst@lefthss + \expandafter\lst@FillOutputBox\the\lst@token\@empty + \lst@righthss}% + \lst@CalcLostSpaceAndOutput}}% + \lst@ResetToken} +\lst@AddToHook{OutputBox}{}% init +\def\lst@gobbledwhitespacetrue{\global\let\lst@ifgobbledws\iftrue} +\def\lst@gobbledwhitespacefalse{\global\let\lst@ifgobbledws\iffalse} +\lst@AddToHookExe{InitBOL}{\lst@gobbledwhitespacefalse}% init +\def\lst@Delay#1{% + \lst@CheckDelay + #1% + \lst@GetOutputMacro\lst@delayedoutput + \edef\lst@delayed{\the\lst@token}% + \edef\lst@delayedlength{\the\lst@length}% + \lst@ResetToken} +\def\lst@Merge#1{% + \lst@CheckMerge + #1% + \edef\lst@merged{\the\lst@token}% + \edef\lst@mergedlength{\the\lst@length}% + \lst@ResetToken} +\def\lst@MergeToken#1#2{% + \advance\lst@length#2% + \lst@lExtend#1{\the\lst@token}% + \expandafter\lst@token\expandafter{#1}% + \let#1\@empty} +\def\lst@CheckDelay{% + \ifx\lst@delayed\@empty\else + \lst@GetOutputMacro\@gtempa + \ifx\lst@delayedoutput\@gtempa + \lst@MergeToken\lst@delayed\lst@delayedlength + \else + {\lst@ResetToken + \lst@MergeToken\lst@delayed\lst@delayedlength + \lst@delayedoutput}% + \let\lst@delayed\@empty + \fi + \fi} +\def\lst@CheckMerge{% + \ifx\lst@merged\@empty\else + \lst@MergeToken\lst@merged\lst@mergedlength + \fi} +\let\lst@delayed\@empty % init +\let\lst@merged\@empty % init +\def\lst@column@fixed{% + \lst@flexiblefalse + \lst@width\lst@widthfixed\relax + \let\lst@OutputLostSpace\lst@UseLostSpace + \let\lst@FillOutputBox\lst@FillFixed + \let\lst@hss\hss + \def\lst@hbox{\hbox to\lst@length\lst@width}} +\def\lst@FillFixed#1{#1\lst@FillFixed@} +\def\lst@FillFixed@#1{% + \ifx\@empty#1\else \lst@hss#1\expandafter\lst@FillFixed@ \fi} +\def\lst@column@flexible{% + \lst@flexibletrue + \lst@width\lst@widthflexible\relax + \let\lst@OutputLostSpace\lst@UseLostSpace + \let\lst@FillOutputBox\@empty + \let\lst@hss\@empty + \let\lst@hbox\hbox} +\def\lst@column@fullflexible{% + \lst@column@flexible + \def\lst@OutputLostSpace{\lst@ifnewline \lst@UseLostSpace\fi}% + \let\lst@leftinsert\@empty + \let\lst@rightinsert\@empty} +\def\lst@column@spaceflexible{% + \lst@column@flexible + \def\lst@OutputLostSpace{% + \lst@ifwhitespace + \ifx\lst@outputspace\lst@visiblespace + \else + \lst@UseLostSpace + \fi + \else + \lst@ifnewline \lst@UseLostSpace\fi + \fi}% + \let\lst@leftinsert\@empty + \let\lst@rightinsert\@empty} +\def\lst@outputpos#1#2\relax{% + \def\lst@lefthss{\lst@hss}\let\lst@righthss\lst@lefthss + \let\lst@rightinsert\lst@InsertLostSpace + \ifx #1c% + \let\lst@leftinsert\lst@InsertHalfLostSpace + \else\ifx #1r% + \let\lst@righthss\@empty + \let\lst@leftinsert\lst@InsertLostSpace + \let\lst@rightinsert\@empty + \else + \let\lst@lefthss\@empty + \let\lst@leftinsert\@empty + \ifx #1l\else \PackageWarning{Listings}% + {Unknown positioning for output boxes}% + \fi + \fi\fi} +\def\lst@flexibletrue{\let\lst@ifflexible\iftrue} +\def\lst@flexiblefalse{\let\lst@ifflexible\iffalse} +\lst@Key{columns}{[c]fixed}{\lstKV@OptArg[]{#1}{% + \ifx\@empty##1\@empty\else \lst@outputpos##1\relax\relax \fi + \expandafter\let\expandafter\lst@arg + \csname\@lst @column@##2\endcsname + \lst@arg + \ifx\lst@arg\relax + \PackageWarning{Listings}{Unknown column format `##2'}% + \else + \lst@ifflexible + \let\lst@columnsflexible\lst@arg + \else + \let\lst@columnsfixed\lst@arg + \fi + \fi}} +\let\lst@columnsfixed\lst@column@fixed % init +\let\lst@columnsflexible\lst@column@flexible % init +\lst@Key{flexiblecolumns}\relax[t]{% + \lstKV@SetIf{#1}\lst@ifflexible + \lst@ifflexible \lst@columnsflexible + \else \lst@columnsfixed \fi} +\newcount\lst@newlines +\lst@AddToHook{InitVars}{\global\lst@newlines\z@} +\lst@AddToHook{InitVarsBOL}{\global\advance\lst@newlines\@ne} +\def\lst@NewLine{% + \ifx\lst@OutputBox\@gobble\else + \par\noindent \hbox{}% + \fi + \global\advance\lst@newlines\m@ne + \lst@newlinetrue} +\def\lst@newlinetrue{\global\let\lst@ifnewline\iftrue} +\lst@AddToHookExe{PostOutput}{\global\let\lst@ifnewline\iffalse}% init +\def\lst@TrackNewLines{% + \ifnum\lst@newlines>\z@ + \lsthk@OnNewLine + \lst@DoNewLines + \fi} +\lst@AddToHook{OnNewLine}{}% init +\lst@Key{emptylines}\maxdimen{% + \@ifstar{\lst@true\@tempcnta\@gobble#1\relax\lst@GobbleNil}% + {\lst@false\@tempcnta#1\relax\lst@GobbleNil}#1\@nil + \advance\@tempcnta\@ne + \edef\lst@maxempty{\the\@tempcnta\relax}% + \let\lst@ifpreservenumber\lst@if} +\def\lst@DoNewLines{ + \@whilenum\lst@newlines>\lst@maxempty \do + {\lst@ifpreservenumber + \lsthk@OnEmptyLine + \global\advance\c@lstnumber\lst@advancelstnum + \fi + \global\advance\lst@newlines\m@ne}% + \@whilenum \lst@newlines>\@ne \do + {\lsthk@OnEmptyLine \lst@NewLine}% + \ifnum\lst@newlines>\z@ \lst@NewLine \fi} +\lst@AddToHook{OnEmptyLine}{}% init +\lst@Key{identifierstyle}{}{\def\lst@identifierstyle{#1}} +\lst@AddToHook{EmptyStyle}{\let\lst@identifierstyle\@empty} +\def\lst@GotoTabStop{% + \ifnum\lst@newlines=\z@ + \setbox\@tempboxa\hbox{\lst@outputspace}% + \setbox\@tempboxa\hbox to\wd\@tempboxa{{\lst@currstyle{\hss}}}% + \lst@CalcLostSpaceAndOutput + \else + \global\advance\lst@lostspace \lst@length\lst@width + \global\advance\lst@column\lst@length \lst@length\z@ + \fi} +\def\lst@OutputOther{% + \lst@CheckDelay + \ifnum\lst@length=\z@\else + \let\lst@thestyle\lst@currstyle + \lsthk@OutputOther + \lst@OutputToken + \fi} +\lst@AddToHook{OutputOther}{}% init +\let\lst@currstyle\relax % init +\def\lst@Output{% + \lst@CheckDelay + \ifnum\lst@length=\z@\else + \ifx\lst@currstyle\relax + \let\lst@thestyle\lst@identifierstyle + \else + \let\lst@thestyle\lst@currstyle + \fi + \lsthk@Output + \lst@OutputToken + \fi + \let\lst@lastother\relax} +\lst@AddToHook{Output}{}% init +\def\lst@GetOutputMacro#1{% + \lst@ifletter \global\let#1\lst@Output + \else \global\let#1\lst@OutputOther\fi} +\def\lst@PrintToken{% + \lst@ifletter \lst@Output \lst@letterfalse + \else \lst@OutputOther \let\lst@lastother\@empty \fi} +\def\lst@XPrintToken{% + \lst@PrintToken \lst@CheckMerge + \ifnum\lst@length=\z@\else \lst@PrintToken \fi} +\def\lst@BeginDropOutput#1{% + \xdef\lst@BDOnewlines{\the\lst@newlines}% + \global\let\lst@BDOifnewline\lst@ifnewline + \lst@EnterMode{#1}% + {\lst@modetrue + \let\lst@OutputBox\@gobble + \aftergroup\lst@BDORestore}} +\def\lst@BDORestore{% + \global\lst@newlines\lst@BDOnewlines + \global\let\lst@ifnewline\lst@BDOifnewline} +\let\lst@EndDropOutput\lst@LeaveMode +\def\lst@ProcessLetter{\lst@whitespacefalse \lst@AppendLetter} +\def\lst@ProcessOther{\lst@whitespacefalse \lst@AppendOther} +\def\lst@ProcessDigit{% + \lst@whitespacefalse + \lst@ifletter \expandafter\lst@AppendLetter + \else \expandafter\lst@AppendOther\fi} +\def\lst@whitespacetrue{\global\let\lst@ifwhitespace\iftrue} +\def\lst@whitespacefalse{\global\let\lst@ifwhitespace\iffalse} +\lst@AddToHook{InitVarsBOL}{\lst@whitespacetrue} +\lst@Key{tabsize}{8} + {\ifnum#1>\z@ \def\lst@tabsize{#1}\else + \PackageError{Listings}{Strict positive integer expected}% + {You can't use `#1' as tabsize. \@ehc}% + \fi} +\lst@Key{showtabs}f[t]{\lstKV@SetIf{#1}\lst@ifshowtabs} +\lst@Key{tab}{\kern.06em\hbox{\vrule\@height.3ex}% + \hrulefill\hbox{\vrule\@height.3ex}} + {\def\lst@tab{#1}} +\def\lst@ProcessTabulator{% + \lst@XPrintToken \lst@whitespacetrue + \global\advance\lst@column -\lst@pos + \@whilenum \lst@pos<\@ne \do + {\global\advance\lst@pos\lst@tabsize}% + \lst@length\lst@pos + \lst@PreGotoTabStop} +\def\lst@PreGotoTabStop{% + \lst@ifshowtabs + \lst@TrackNewLines + \setbox\@tempboxa\hbox to\lst@length\lst@width + {{\lst@currstyle{\hss\lst@tab}}}% + \lst@CalcLostSpaceAndOutput + \else + \lst@ifkeepspaces + \@tempcnta\lst@length \lst@length\z@ + \@whilenum \@tempcnta>\z@ \do + {\lst@AppendOther\lst@outputspace + \advance\@tempcnta\m@ne}% + \lst@OutputOther + \else + \lst@GotoTabStop + \fi + \fi + \lst@length\z@ \global\lst@pos\z@} +\def\lst@outputspace{\ } +\def\lst@visiblespace{\lst@ttfamily{\char32}\textvisiblespace} +\lst@Key{showspaces}{false}[t]{\lstKV@SetIf{#1}\lst@ifshowspaces} +\lst@Key{keepspaces}{false}[t]{\lstKV@SetIf{#1}\lst@ifkeepspaces} +\lst@AddToHook{Init} + {\lst@ifshowspaces + \let\lst@outputspace\lst@visiblespace + \lst@keepspacestrue + \fi} +\def\lst@keepspacestrue{\let\lst@ifkeepspaces\iftrue} +\def\lst@ProcessSpace{% + \lst@ifkeepspaces + \lst@PrintToken + \lst@whitespacetrue + \lst@AppendOther\lst@outputspace + \lst@PrintToken + \else \ifnum\lst@newlines=\z@ + \lst@AppendSpecialSpace + \else \ifnum\lst@length=\z@ + \global\advance\lst@lostspace\lst@width + \global\advance\lst@pos\m@ne + \lst@whitespacetrue + \else + \lst@AppendSpecialSpace + \fi + \fi \fi} +\def\lst@AppendSpecialSpace{% + \lst@ifwhitespace + \lst@PrintToken + \global\advance\lst@lostspace\lst@width + \global\advance\lst@pos\m@ne + \lst@gobbledwhitespacetrue + \else + \lst@PrintToken + \lst@whitespacetrue + \lst@AppendOther\lst@outputspace + \lst@PrintToken + \fi} +\lst@Key{formfeed}{\bigbreak}{\def\lst@formfeed{#1}} +\def\lst@ProcessFormFeed{% + \lst@XPrintToken + \ifnum\lst@newlines=\z@ + \lst@EOLUpdate \lsthk@InitVarsBOL + \fi + \lst@formfeed + \lst@whitespacetrue} +\def\lst@Def#1{\lccode`\~=#1\lowercase{\def~}} +\def\lst@Let#1{\lccode`\~=#1\lowercase{\let~}} +\lst@AddToAtTop{\try@load@fontshape}{\def\space{ }} +\def\lst@SelectStdCharTable{% + \lst@Def{9}{\lst@ProcessTabulator}% + \lst@Def{12}{\lst@ProcessFormFeed}% + \lst@Def{32}{\lst@ProcessSpace}} +\def\lst@CCPut#1#2{% + \ifnum#2=\z@ + \expandafter\@gobbletwo + \else + \lccode`\~=#2\lccode`\/=#2\lowercase{\lst@CCPut@~{#1/}}% + \fi + \lst@CCPut#1} +\def\lst@CCPut@#1#2{\lst@lAddTo\lst@SelectStdCharTable{\def#1{#2}}} +\lst@CCPut \lst@ProcessOther + {"21}{"22}{"28}{"29}{"2B}{"2C}{"2E}{"2F} + {"3A}{"3B}{"3D}{"3F}{"5B}{"5D} + \z@ +\lst@CCPut \lst@ProcessDigit + {"30}{"31}{"32}{"33}{"34}{"35}{"36}{"37}{"38}{"39} + \z@ +\lst@CCPut \lst@ProcessLetter + {"40}{"41}{"42}{"43}{"44}{"45}{"46}{"47} + {"48}{"49}{"4A}{"4B}{"4C}{"4D}{"4E}{"4F} + {"50}{"51}{"52}{"53}{"54}{"55}{"56}{"57} + {"58}{"59}{"5A} + {"61}{"62}{"63}{"64}{"65}{"66}{"67} + {"68}{"69}{"6A}{"6B}{"6C}{"6D}{"6E}{"6F} + {"70}{"71}{"72}{"73}{"74}{"75}{"76}{"77} + {"78}{"79}{"7A} + \z@ +\def\lst@CCPutMacro#1#2#3{% + \ifnum#2=\z@ \else + \begingroup\lccode`\~=#2\relax \lccode`\/=#2\relax + \lowercase{\endgroup\expandafter\lst@CCPutMacro@ + \csname\@lst @um/\expandafter\endcsname + \csname\@lst @um/@\endcsname /~}#1{#3}% + \expandafter\lst@CCPutMacro + \fi} +\def\lst@CCPutMacro@#1#2#3#4#5#6{% + \lst@lAddTo\lst@SelectStdCharTable{\def#4{#5#1}}% + \def#1{\lst@UM#3}% + \def#2{#6}} +\def\lst@UM#1{\csname\@lst @um#1@\endcsname} +\lst@CCPutMacro + \lst@ProcessOther {"23}\# + \lst@ProcessLetter{"24}\textdollar + \lst@ProcessOther {"25}\% + \lst@ProcessOther {"26}\& + \lst@ProcessOther {"27}{\lst@ifupquote \textquotesingle + \else \char39\relax \fi} + \lst@ProcessOther {"2A}{\lst@ttfamily*\textasteriskcentered} + \lst@ProcessOther {"2D}{\lst@ttfamily{-{}}{$-$}} + \lst@ProcessOther {"3C}{\lst@ttfamily<\textless} + \lst@ProcessOther {"3E}{\lst@ttfamily>\textgreater} + \lst@ProcessOther {"5C}{\lst@ttfamily{\char92}\textbackslash} + \lst@ProcessOther {"5E}\textasciicircum + \lst@ProcessLetter{"5F}{\lst@ttfamily{\char95}\textunderscore} + \lst@ProcessOther {"60}{\lst@ifupquote \textasciigrave + \else \char96\relax \fi} + \lst@ProcessOther {"7B}{\lst@ttfamily{\char123}\textbraceleft} + \lst@ProcessOther {"7C}{\lst@ttfamily|\textbar} + \lst@ProcessOther {"7D}{\lst@ttfamily{\char125}\textbraceright} + \lst@ProcessOther {"7E}\textasciitilde + \lst@ProcessOther {"7F}- + \@empty\z@\@empty +\def\lst@ttfamily#1#2{\ifx\f@family\ttdefault#1\relax\else#2\fi} +\lst@AddToHook{Init}{\edef\ttdefault{\ttdefault}} +\lst@Key{upquote}{false}[t]{\lstKV@SetIf{#1}\lst@ifupquote + \lst@ifupquote + \@ifundefined{textasciigrave}% + {\let\KV@lst@upquote\@gobble + \lstKV@SetIf f\lst@ifupquote \@gobble\fi + \PackageError{Listings}{Option `upquote' requires `textcomp' + package.\MessageBreak The option has been disabled}% + {Add \string\usepackage{textcomp} to your preamble.}}% + {}% + \fi} +\AtBeginDocument{% + \@ifpackageloaded{upquote}{\RequirePackage{textcomp}% + \lstset{upquote}}{}% + \@ifpackageloaded{upquote2}{\lstset{upquote}}{}} +\def\lst@activecharstrue{\let\lst@ifactivechars\iftrue} +\def\lst@activecharsfalse{\let\lst@ifactivechars\iffalse} +\lst@activecharstrue +\def\lst@SelectCharTable{% + \lst@SelectStdCharTable + \lst@ifactivechars + \catcode9\active \catcode12\active \catcode13\active + \@tempcnta=32\relax + \@whilenum\@tempcnta<128\do + {\catcode\@tempcnta\active\advance\@tempcnta\@ne}% + \fi + \lst@ifec \lst@DefEC \fi + \let\do\lst@do@noligs \verbatim@nolig@list + \lsthk@SelectCharTable + \lst@DeveloperSCT +\lst@DefRange + \ifx\lst@Backslash\relax\else + \lst@LetSaveDef{"5C}\lsts@backslash\lst@Backslash + \fi} +\lst@Key{SelectCharTable}{}{\def\lst@DeveloperSCT{#1}} +\lst@Key{MoreSelectCharTable}\relax{\lst@lAddTo\lst@DeveloperSCT{#1}} +\lst@AddToHook{SetLanguage}{\let\lst@DeveloperSCT\@empty} +\def\lst@do@noligs#1{% + \begingroup \lccode`\~=`#1\lowercase{\endgroup + \lst@do@noligs@~}} +\def\lst@do@noligs@#1{% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter#1% + \expandafter\expandafter\expandafter{\expandafter\lst@NoLig#1}} +\def\lst@NoLig{\advance\lst@length\m@ne \lst@Append\lst@nolig} +\def\lst@nolig{\lst@UM\@empty}% +\@namedef{\@lst @um@}{\leavevmode\kern\z@} +\def\lst@SaveOutputDef#1#2{% + \begingroup \lccode`\~=#1\relax \lowercase{\endgroup + \def\lst@temp##1\def~##2##3\relax}{% + \global\expandafter\let\expandafter#2\@gobble##2\relax}% + \expandafter\lst@temp\lst@SelectStdCharTable\relax} +\lst@SaveOutputDef{"5C}\lstum@backslash +\lst@Key{extendedchars}{true}[t]{\lstKV@SetIf{#1}\lst@ifec} +\def\lst@DefEC{% + \lst@CCECUse \lst@ProcessLetter + ^^80^^81^^82^^83^^84^^85^^86^^87^^88^^89^^8a^^8b^^8c^^8d^^8e^^8f% + ^^90^^91^^92^^93^^94^^95^^96^^97^^98^^99^^9a^^9b^^9c^^9d^^9e^^9f% + ^^a0^^a1^^a2^^a3^^a4^^a5^^a6^^a7^^a8^^a9^^aa^^ab^^ac^^ad^^ae^^af% + ^^b0^^b1^^b2^^b3^^b4^^b5^^b6^^b7^^b8^^b9^^ba^^bb^^bc^^bd^^be^^bf% + ^^c0^^c1^^c2^^c3^^c4^^c5^^c6^^c7^^c8^^c9^^ca^^cb^^cc^^cd^^ce^^cf% + ^^d0^^d1^^d2^^d3^^d4^^d5^^d6^^d7^^d8^^d9^^da^^db^^dc^^dd^^de^^df% + ^^e0^^e1^^e2^^e3^^e4^^e5^^e6^^e7^^e8^^e9^^ea^^eb^^ec^^ed^^ee^^ef% + ^^f0^^f1^^f2^^f3^^f4^^f5^^f6^^f7^^f8^^f9^^fa^^fb^^fc^^fd^^fe^^ff% + ^^00} +\def\lst@CCECUse#1#2{% + \ifnum`#2=\z@ + \expandafter\@gobbletwo + \else + \ifnum\catcode`#2=\active + \lccode`\~=`#2\lccode`\/=`#2\lowercase{\lst@CCECUse@#1~/}% + \else + \lst@ifactivechars \catcode`#2=\active \fi + \lccode`\~=`#2\lccode`\/=`#2\lowercase{\def~{#1/}}% + \fi + \fi + \lst@CCECUse#1} +\def\lst@CCECUse@#1#2#3{% + \expandafter\def\csname\@lst @EC#3\endcsname{\lst@UM#3}% + \expandafter\let\csname\@lst @um#3@\endcsname #2% + \edef#2{\noexpand#1% + \expandafter\noexpand\csname\@lst @EC#3\endcsname}} +\lst@AddToHook{Init} + {\let\lsts@nfss@catcodes\nfss@catcodes + \let\nfss@catcodes\lst@nfss@catcodes} +\def\lst@nfss@catcodes{% + \lst@makeletter + ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\relax + \@makeother (\@makeother )\@makeother ,\@makeother :\@makeother\&% + \@makeother 0\@makeother 1\@makeother 2\@makeother 3\@makeother 4% + \@makeother 5\@makeother 6\@makeother 7\@makeother 8\@makeother 9% + \@makeother =\lsts@nfss@catcodes} +\def\lst@makeletter#1{% + \ifx\relax#1\else\catcode`#111\relax \expandafter\lst@makeletter\fi} +\lst@Key{useoutput}{2}{\edef\lst@useoutput{\ifcase0#1 0\or 1\else 2\fi}} +\lst@AddToHook{Init} +{\edef\lst@OrgOutput{\the\output}% +\ifcase\lst@useoutput\relax +\or + \output{\global\setbox\lst@gtempboxa\box\@cclv + \expandafter\egroup + \lst@SaveToken + \lst@InterruptModes + \setbox\@cclv\box\lst@gtempboxa + \bgroup\lst@OrgOutput\egroup + \bgroup + \aftergroup\pagegoal\aftergroup\vsize + \aftergroup\lst@ReenterModes\aftergroup\lst@RestoreToken}% +\else + \output{\lst@RestoreOrigCatcodes + \lst@ifec \lst@RestoreOrigExtendedCatcodes \fi + \lst@OrgOutput}% +\fi} +\def\lst@GetChars#1#2#3{% + \let#1\@empty + \@tempcnta#2\relax \@tempcntb#3\relax + \loop \ifnum\@tempcnta<\@tempcntb\relax + \lst@lExtend#1{\expandafter\catcode\the\@tempcnta=}% + \lst@lExtend#1{\the\catcode\@tempcnta\relax}% + \ifnum\the\catcode\@tempcnta=\active + \begingroup\lccode`\~=\@tempcnta + \lowercase{\endgroup + \lst@lExtend#1{\expandafter\let\expandafter~\csname + lstecs@\the\@tempcnta\endcsname}% + \expandafter\let\csname lstecs@\the\@tempcnta\endcsname~}% + \fi + \advance\@tempcnta\@ne + \repeat} +\begingroup \catcode12=\active\let^^L\@empty +\gdef\lst@ScanChars{% + \let\lsts@ssL^^L% + \def^^L{\par}% + \lst@GetChars\lst@RestoreOrigCatcodes\@ne {128}% + \let^^L\lsts@ssL + \lst@GetChars\lst@RestoreOrigExtendedCatcodes{128}{256}} +\endgroup +\lst@Key{rescanchars}\relax{\lst@ScanChars} +\AtBeginDocument{\lst@ScanChars} +\lst@Key{alsoletter}\relax{% + \lst@DoAlso{#1}\lst@alsoletter\lst@ProcessLetter} +\lst@Key{alsodigit}\relax{% + \lst@DoAlso{#1}\lst@alsodigit\lst@ProcessDigit} +\lst@Key{alsoother}\relax{% + \lst@DoAlso{#1}\lst@alsoother\lst@ProcessOther} +\lst@AddToHook{SelectCharTable} + {\lst@alsoother \lst@alsodigit \lst@alsoletter} +\lst@AddToHookExe{SetLanguage}% init + {\let\lst@alsoletter\@empty + \let\lst@alsodigit\@empty + \let\lst@alsoother\@empty} +\def\lst@DoAlso#1#2#3{% + \lst@DefOther\lst@arg{#1}\let#2\@empty + \expandafter\lst@DoAlso@\expandafter#2\expandafter#3\lst@arg\relax} +\def\lst@DoAlso@#1#2#3{% + \ifx\relax#3\expandafter\@gobblethree \else + \begingroup \lccode`\~=`#3\relax \lowercase{\endgroup + \def\lst@temp##1\def~##2##3\relax{% + \edef\lst@arg{\def\noexpand~{\noexpand#2\expandafter + \noexpand\@gobble##2}}}}% + \expandafter\lst@temp\lst@SelectStdCharTable\relax + \lst@lExtend#1{\lst@arg}% + \fi + \lst@DoAlso@#1#2} +\def\lst@SaveDef#1#2{% + \begingroup \lccode`\~=#1\relax \lowercase{\endgroup\let#2~}} +\def\lst@DefSaveDef#1#2{% + \begingroup \lccode`\~=#1\relax \lowercase{\endgroup\let#2~\def~}} +\def\lst@LetSaveDef#1#2{% + \begingroup \lccode`\~=#1\relax \lowercase{\endgroup\let#2~\let~}} +\def\lst@CDef#1{\lst@CDef@#1} +\def\lst@CDef@#1#2#3#4{\lst@CDefIt#1{#2}{#3}{#4#2#3}#4} +\def\lst@CDefX#1{\lst@CDefX@#1} +\def\lst@CDefX@#1#2#3{\lst@CDefIt#1{#2}{#3}{}} +\def\lst@CDefIt#1#2#3#4#5#6#7#8{% + \ifx\@empty#2\@empty + \def#1{#6\def\lst@next{#7#4#8}\lst@next}% + \else \ifx\@empty#3\@empty + \def#1##1{% + #6% + \ifx##1#2\def\lst@next{#7#4#8}\else + \def\lst@next{#5##1}\fi + \lst@next}% + \else + \def#1{% + #6% + \lst@IfNextCharsArg{#2#3}{#7#4#8}% + {\expandafter#5\lst@eaten}}% + \fi \fi} +\def\lst@CArgX#1#2\relax{% + \lst@DefActive\lst@arg{#1#2}% + \expandafter\lst@CArg\lst@arg\relax} +\def\lst@CArg#1#2\relax{% + \lccode`\/=`#1\lowercase{\def\lst@temp{/}}% + \lst@GetFreeMacro{lst@c\lst@temp}% + \expandafter\lst@CArg@\lst@freemacro#1#2\@empty\@empty\relax} +\def\lst@CArg@#1#2#3#4\@empty#5\relax#6{% + \let#1#2% + \ifx\@empty#3\@empty + \def\lst@next{#6{#2{}{}}}% + \else + \def\lst@next{#6{#2#3{#4}}}% + \fi + \lst@next #1} +\def\lst@CArgEmpty#1\@empty{#1} +\lst@Key{excludedelims}\relax + {\lsthk@ExcludeDelims \lst@NormedDef\lst@temp{#1}% + \expandafter\lst@for\lst@temp\do + {\expandafter\let\csname\@lst @ifex##1\endcsname\iftrue}} +\def\lst@DelimPrint#1#2{% + #1% + \begingroup + \lst@mode\lst@nomode \lst@modetrue + #2\lst@XPrintToken + \endgroup + \lst@ResetToken + \fi} +\def\lst@DelimOpen#1#2#3#4#5#6\@empty{% + \lst@TrackNewLines \lst@XPrintToken + \lst@DelimPrint#1{#6}% + \lst@EnterMode{#4}{\def\lst@currstyle#5}% + \lst@DelimPrint{#1#2}{#6}% + #3} +\def\lst@DelimClose#1#2#3\@empty{% + \lst@TrackNewLines \lst@XPrintToken + \lst@DelimPrint{#1#2}{#3}% + \lst@LeaveMode + \lst@DelimPrint{#1}{#3}} +\def\lst@BeginDelim{\lst@DelimOpen\iffalse\else{}} +\def\lst@EndDelim{\lst@DelimClose\iffalse\else} +\def\lst@BeginIDelim{\lst@DelimOpen\iffalse{}{}} +\def\lst@EndIDelim{\lst@DelimClose\iffalse{}} +\lst@AddToHook{SelectCharTable}{\lst@DefDelims} +\lst@AddToHookExe{SetLanguage}{\let\lst@DefDelims\@empty} +\def\lst@Delim#1{% + \lst@false \let\lst@cumulative\@empty \let\lst@arg\@empty + \@ifstar{\@ifstar{\lst@Delim@{#1}}% + {\let\lst@cumulative\relax + \lst@Delim@{#1}}}% + {\lst@true\lst@Delim@{#1}}} +\def\lst@Delim@#1[#2]{% + \gdef\lst@delimtype{#2}% + \@ifnextchar[\lst@Delim@sty + {\lst@Delim@sty[#1]}} +\def\lst@Delim@sty[#1]{% + \def\lst@delimstyle{#1}% + \ifx\@empty#1\@empty\else + \lst@Delim@sty@ #1\@nil + \fi + \@ifnextchar[\lst@Delim@option + \lst@Delim@delim} +\def\lst@Delim@option[#1]{\def\lst@arg{[#1]}\lst@Delim@delim} +\def\lst@Delim@sty@#1#2\@nil{% + \if\relax\noexpand#1\else + \edef\lst@delimstyle{\expandafter\noexpand + \csname\@lst @\lst@delimstyle\endcsname}% + \fi} +\def\lst@Delim@delim#1\relax#2#3#4#5#6#7#8{% + \ifx #4\@empty \lst@Delim@delall{#2}\fi + \ifx\@empty#1\@empty + \ifx #4\@nil + \@ifundefined{\@lst @#2DM@\lst@delimtype}% + {\lst@Delim@delall{#2@\lst@delimtype}}% + {\lst@Delim@delall{#2DM@\lst@delimtype}}% + \fi + \else + \expandafter\lst@Delim@args\expandafter + {\lst@delimtype}{#1}{#5}#6{#7}{#8}#4% + \let\lst@delim\@empty + \expandafter\lst@IfOneOf\lst@delimtype\relax#3% + {\@ifundefined{\@lst @#2DM@\lst@delimtype}% + {\lst@lExtend\lst@delim{\csname\@lst @#2@\lst@delimtype + \expandafter\endcsname\lst@arg}}% + {\lst@lExtend\lst@delim{\expandafter\lst@UseDynamicMode + \csname\@lst @#2DM@\lst@delimtype + \expandafter\endcsname\lst@arg}}% + \ifx #4\@nil + \let\lst@temp\lst@DefDelims \let\lst@DefDelims\@empty + \expandafter\lst@Delim@del\lst@temp\@empty\@nil\@nil\@nil + \else + \lst@lExtend\lst@DefDelims\lst@delim + \fi}% + {\PackageError{Listings}{Illegal type `\lst@delimtype'}% + {#2 types are #3.}}% + \fi} +\def\lst@Delim@args#1#2#3#4#5#6#7{% + \begingroup + \lst@false \let\lst@next\lst@XConvert + \@ifnextchar #4{\xdef\lst@delimtype{\expandafter\@gobble + \lst@delimtype}% + #5\lst@next#2\@nil + \lst@lAddTo\lst@arg{\@empty#6}% + \lst@GobbleNil}% + {\lst@next#2\@nil + \lst@lAddTo\lst@arg{\@empty#3}% + \lst@GobbleNil}% + #1\@nil + \global\let\@gtempa\lst@arg + \endgroup + \let\lst@arg\@gtempa + \ifx #7\@nil\else + \expandafter\lst@Delim@args@\expandafter{\lst@delimstyle}% + \fi} +\def\lst@Delim@args@#1{% + \lst@if + \lst@lAddTo\lst@arg{{{#1}\lst@modetrue}}% + \else + \ifx\lst@cumulative\@empty + \lst@lAddTo\lst@arg{{{}#1}}% + \else + \lst@lAddTo\lst@arg{{{#1}}}% + \fi + \fi} +\def\lst@Delim@del#1\@empty#2#3#4{% + \ifx #2\@nil\else + \def\lst@temp{#1\@empty#2#3}% + \ifx\lst@temp\lst@delim\else + \lst@lAddTo\lst@DefDelims{#1\@empty#2#3{#4}}% + \fi + \expandafter\lst@Delim@del + \fi} +\def\lst@Delim@delall#1{% + \begingroup + \edef\lst@delim{\expandafter\string\csname\@lst @#1\endcsname}% + \lst@false \global\let\@gtempa\@empty + \expandafter\lst@Delim@delall@\lst@DefDelims\@empty + \endgroup + \let\lst@DefDelims\@gtempa} +\def\lst@Delim@delall@#1{% + \ifx #1\@empty\else + \ifx #1\lst@UseDynamicMode + \lst@true + \let\lst@next\lst@Delim@delall@do + \else + \def\lst@next{\lst@Delim@delall@do#1}% + \fi + \expandafter\lst@next + \fi} +\def\lst@Delim@delall@do#1#2\@empty#3#4#5{% + \expandafter\lst@IfSubstring\expandafter{\lst@delim}{\string#1}% + {}% + {\lst@if \lst@AddTo\@gtempa\lst@UseDynamicMode \fi + \lst@AddTo\@gtempa{#1#2\@empty#3#4{#5}}}% + \lst@false \lst@Delim@delall@} +\gdef\lst@DefDelimB#1#2#3#4#5#6#7#8{% + \lst@CDef{#1}#2% + {#3}% + {\let\lst@bnext\lst@CArgEmpty + \lst@ifmode #4\else + #5% + \def\lst@bnext{#6{#7}{#8}}% + \fi + \lst@bnext}% + \@empty} +\gdef\lst@DefDelimE#1#2#3#4#5#6#7{% + \lst@CDef{#1}#2% + {#3}% + {\let\lst@enext\lst@CArgEmpty + \ifnum #7=\lst@mode% + #4% + \let\lst@enext#6% + \else + #5% + \fi + \lst@enext}% + \@empty} +\lst@AddToHook{Init}{\let\lst@bnext\relax \let\lst@enext\relax} +\gdef\lst@DefDelimBE#1#2#3#4#5#6#7#8#9{% + \lst@CDef{#1}#2% + {#3}% + {\let\lst@bnext\lst@CArgEmpty + \ifnum #7=\lst@mode + #4% + \let\lst@bnext#9% + \else + \lst@ifmode\else + #5% + \def\lst@bnext{#6{#7}{#8}}% + \fi + \fi + \lst@bnext}% + \@empty} +\gdef\lst@delimtypes{s,l} +\gdef\lst@DelimKey#1#2{% + \lst@Delim{}#2\relax + {Delim}\lst@delimtypes #1% + {\lst@BeginDelim\lst@EndDelim} + i\@empty{\lst@BeginIDelim\lst@EndIDelim}} +\lst@Key{delim}\relax{\lst@DelimKey\@empty{#1}} +\lst@Key{moredelim}\relax{\lst@DelimKey\relax{#1}} +\lst@Key{deletedelim}\relax{\lst@DelimKey\@nil{#1}} +\gdef\lst@DelimDM@l#1#2\@empty#3#4#5{% + \lst@CArg #2\relax\lst@DefDelimB{}{}{}#3{#1}{#5\lst@Lmodetrue}} +\gdef\lst@DelimDM@s#1#2#3\@empty#4#5#6{% + \lst@CArg #2\relax\lst@DefDelimB{}{}{}#4{#1}{#6}% + \lst@CArg #3\relax\lst@DefDelimE{}{}{}#5{#1}} +\def\lst@ReplaceInput#1{\lst@CArgX #1\relax\lst@CDefX{}{}} +\def\lst@Literatekey#1\@nil@{\let\lst@ifxliterate\lst@if + \def\lst@literate{#1}} +\lst@Key{literate}{}{\@ifstar{\lst@true \lst@Literatekey} + {\lst@false\lst@Literatekey}#1\@nil@} +\lst@AddToHook{SelectCharTable} + {\ifx\lst@literate\@empty\else + \expandafter\lst@Literate\lst@literate{}\relax\z@ + \fi} +\def\lst@Literate#1#2#3{% + \ifx\relax#2\@empty\else + \lst@CArgX #1\relax\lst@CDef + {} + {\let\lst@next\@empty + \lst@ifxliterate + \lst@ifmode \let\lst@next\lst@CArgEmpty \fi + \fi + \ifx\lst@next\@empty + \ifx\lst@OutputBox\@gobble\else + \lst@XPrintToken \let\lst@scanmode\lst@scan@m + \lst@token{#2}\lst@length#3\relax + \lst@XPrintToken + \fi + \let\lst@next\lst@CArgEmptyGobble + \fi + \lst@next}% + \@empty + \expandafter\lst@Literate + \fi} +\def\lst@CArgEmptyGobble#1\@empty{} +\def\lst@BeginDropInput#1{% + \lst@EnterMode{#1}% + {\lst@modetrue + \let\lst@OutputBox\@gobble + \let\lst@ifdropinput\iftrue + \let\lst@ProcessLetter\@gobble + \let\lst@ProcessDigit\@gobble + \let\lst@ProcessOther\@gobble + \let\lst@ProcessSpace\@empty + \let\lst@ProcessTabulator\@empty + \let\lst@ProcessFormFeed\@empty}} +\let\lst@ifdropinput\iffalse % init +\lst@Key{basicstyle}\relax{\def\lst@basicstyle{#1}} +\lst@Key{inputencoding}\relax{\def\lst@inputenc{#1}} +\lst@AddToHook{Init} + {\lst@basicstyle + \ifx\lst@inputenc\@empty\else + \@ifundefined{inputencoding}{}% + {\inputencoding\lst@inputenc}% + \fi} +\lst@AddToHookExe{EmptyStyle} + {\let\lst@basicstyle\@empty + \let\lst@inputenc\@empty} +\lst@Key{multicols}{}{\@tempcnta=0#1\relax\def\lst@multicols{#1}} +\def\lst@parshape{\parshape\@ne \z@ \linewidth} +\lst@AddToHookAtTop{EveryLine}{\lst@parshape} +\lst@AddToHookAtTop{EndGroup}{\lst@parshape} +\newcount\lst@lineno % \global +\lst@AddToHook{InitVars}{\global\lst@lineno\@ne} +\lst@Key{print}{true}[t]{\lstKV@SetIf{#1}\lst@ifprint} +\lst@Key{firstline}\relax{\def\lst@firstline{#1\relax}} +\lst@Key{lastline}\relax{\def\lst@lastline{#1\relax}} +\lst@AddToHook{PreSet} + {\let\lst@firstline\@ne \def\lst@lastline{9999999\relax}} +\lst@Key{linerange}\relax{\lstKV@OptArg[]{#1}{% + \def\lst@interrange{##1}\def\lst@linerange{##2,}}} +\lst@Key{rangeprefix}\relax{\def\lst@rangebeginprefix{#1}% + \def\lst@rangeendprefix{#1}} +\lst@Key{rangesuffix}\relax{\def\lst@rangebeginsuffix{#1}% + \def\lst@rangeendsuffix{#1}} +\lst@Key{rangebeginprefix}{}{\def\lst@rangebeginprefix{#1}} +\lst@Key{rangebeginsuffix}{}{\def\lst@rangebeginsuffix{#1}} +\lst@Key{rangeendprefix}{}{\def\lst@rangeendprefix{#1}} +\lst@Key{rangeendsuffix}{}{\def\lst@rangeendsuffix{#1}} +\lst@Key{includerangemarker}{true}[t]{\lstKV@SetIf{#1}\lst@ifincluderangemarker} +\lst@AddToHook{PreSet}{\def\lst@firstline{1\relax}% + \let\lst@linerange\@empty} +\lst@AddToHook{Init} +{\ifx\lst@linerange\@empty + \edef\lst@linerange{{\lst@firstline}-{\lst@lastline},}% + \fi + \lst@GetLineInterval}% +\def\lst@GetLineInterval{\expandafter\lst@GLI\lst@linerange\@nil} +\def\lst@GLI#1,#2\@nil{\def\lst@linerange{#2}\lst@GLI@#1--\@nil} +\def\lst@GLI@#1-#2-#3\@nil{% + \lst@IfNumber{#1}% + {\ifx\@empty#1\@empty + \let\lst@firstline\@ne + \else + \def\lst@firstline{#1\relax}% + \fi + \ifx\@empty#3\@empty + \def\lst@lastline{9999999\relax}% + \else + \ifx\@empty#2\@empty + \let\lst@lastline\lst@firstline + \else + \def\lst@lastline{#2\relax}% + \fi + \fi}% + {\def\lst@firstline{9999999\relax}% + \let\lst@lastline\lst@firstline + \let\lst@rangebegin\lst@rangebeginprefix + \lst@AddTo\lst@rangebegin{#1}\lst@Extend\lst@rangebegin\lst@rangebeginsuffix + \ifx\@empty#3\@empty + \let\lst@rangeend\lst@rangeendprefix + \lst@AddTo\lst@rangeend{#1}\lst@Extend\lst@rangeend\lst@rangeendsuffix + \else + \ifx\@empty#2\@empty + \let\lst@rangeend\@empty + \else + \let\lst@rangeend\lst@rangeendprefix + \lst@AddTo\lst@rangeend{#2}\lst@Extend\lst@rangeend\lst@rangeendsuffix + \fi + \fi + \global\def\lst@DefRange{\expandafter\lst@CArgX\lst@rangebegin\relax\lst@DefRangeB}% + \ifnum\lst@mode=\lst@Pmode \expandafter\lst@DefRange \fi}} +\lst@AddToHookExe{DeInit}{\global\let\lst@DefRange\@empty} +\def\lst@DefRangeB#1#2{\lst@DefRangeB@#1#2} +\def\lst@DefRangeB@#1#2#3#4{% + \lst@CDef{#1{#2}{#3}}#4{}% + {\lst@ifincluderangemarker + \lst@LeaveMode + \let#1#4% + \lst@DefRangeEnd + \lst@InitLstNumber + \else + \@tempcnta\lst@lineno \advance\@tempcnta\@ne + \edef\lst@firstline{\the\@tempcnta\relax}% + \gdef\lst@OnceAtEOL{\let#1#4\lst@DefRangeEnd}% + \lst@InitLstNumber + \fi + \global\let\lst@DefRange\lst@DefRangeEnd + \lst@CArgEmpty}% + \@empty} +\def\lstpatch@labels{% +\gdef\lst@SetFirstNumber{% + \ifx\lst@firstnumber\@undefined + \@tempcnta 0\csname\@lst no@\lst@intname\endcsname\relax + \ifnum\@tempcnta=\z@ \else + \lst@nololtrue + \advance\@tempcnta\lst@advancenumber + \edef\lst@firstnumber{\the\@tempcnta\relax}% + \fi + \fi}% +} +\def\lst@InitLstNumber{% + \global\c@lstnumber\lst@firstnumber + \global\advance\c@lstnumber\lst@advancenumber + \global\advance\c@lstnumber-\lst@advancelstnum + \ifx \lst@firstnumber\c@lstnumber + \global\advance\c@lstnumber-\lst@advancelstnum + \fi} +\def\lst@DefRangeEnd{% + \ifx\lst@rangeend\@empty\else + \expandafter\lst@CArgX\lst@rangeend\relax\lst@DefRangeE + \fi} +\def\lst@DefRangeE#1#2{\lst@DefRangeE@#1#2} +\def\lst@DefRangeE@#1#2#3#4{% + \lst@CDef{#1#2{#3}}#4{}% + {\let#1#4% + \edef\lst@lastline{\the\lst@lineno\relax}% + \lst@DefRangeE@@}% + \@empty} +\def\lst@DefRangeE@@#1\@empty{% + \lst@ifincluderangemarker + #1\lst@XPrintToken + \fi + \lst@LeaveModeToPmode + \lst@BeginDropInput{\lst@Pmode}} +\def\lst@LeaveModeToPmode{% + \ifnum\lst@mode=\lst@Pmode + \expandafter\lsthk@EndGroup + \else + \expandafter\egroup\expandafter\lst@LeaveModeToPmode + \fi} +\lst@AddToHook{EOL}{\lst@OnceAtEOL\global\let\lst@OnceAtEOL\@empty} +\gdef\lst@OnceAtEOL{}% Init +\def\lst@MSkipToFirst{% + \global\advance\lst@lineno\@ne + \ifnum \lst@lineno=\lst@firstline + \def\lst@next{\lst@LeaveMode \global\lst@newlines\z@ + \lst@OnceAtEOL \global\let\lst@OnceAtEOL\@empty + \lst@InitLstNumber % Added to work with modified \lsthk@PreInit. + \lsthk@InitVarsBOL + \lst@BOLGobble}% + \expandafter\lst@next + \fi} +\def\lst@SkipToFirst{% + \ifnum \lst@lineno<\lst@firstline + \def\lst@next{\lst@BeginDropInput\lst@Pmode + \lst@Let{13}\lst@MSkipToFirst + \lst@Let{10}\lst@MSkipToFirst}% + \expandafter\lst@next + \else + \expandafter\lst@BOLGobble + \fi} +\def\lst@IfNumber#1{% + \ifx\@empty#1\@empty + \let\lst@next\@firstoftwo + \else + \lst@IfNumber@#1\@nil + \fi + \lst@next} +\def\lst@IfNumber@#1#2\@nil{% + \let\lst@next\@secondoftwo + \ifnum`#1>47\relax \ifnum`#1>57\relax\else + \let\lst@next\@firstoftwo + \fi\fi} +\lst@Key{nolol}{false}[t]{\lstKV@SetIf{#1}\lst@ifnolol} +\def\lst@nololtrue{\let\lst@ifnolol\iftrue} +\let\lst@ifnolol\iffalse % init +\lst@Key{captionpos}{t}{\def\lst@captionpos{#1}} +\lst@Key{abovecaptionskip}\smallskipamount{\def\lst@abovecaption{#1}} +\lst@Key{belowcaptionskip}\smallskipamount{\def\lst@belowcaption{#1}} +\lst@Key{label}\relax{\def\lst@label{#1}} +\lst@Key{title}\relax{\def\lst@title{#1}\let\lst@caption\relax} +\lst@Key{caption}\relax{\lstKV@OptArg[{#1}]{#1}% + {\def\lst@caption{##2}\def\lst@@caption{##1}}% + \let\lst@title\@empty} +\lst@AddToHookExe{TextStyle} + {\let\lst@caption\@empty \let\lst@@caption\@empty + \let\lst@title\@empty \let\lst@label\@empty} +\AtBeginDocument{ + \@ifundefined{thechapter}{\let\lst@ifnumberbychapter\iffalse}{} + \lst@ifnumberbychapter + \newcounter{lstlisting}[chapter] + \gdef\thelstlisting% + {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@lstlisting} + \else + \newcounter{lstlisting} + \gdef\thelstlisting{\@arabic\c@lstlisting} + \fi} +\lst@UserCommand\lstlistingname{Listing} +\lst@Key{numberbychapter}{true}[t]{\lstKV@SetIf{#1}\lst@ifnumberbychapter} +\@ifundefined{abovecaptionskip} +{\newskip\abovecaptionskip + \newskip\belowcaptionskip}{} +\@ifundefined{@makecaption} +{\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip + \sbox\@tempboxa{#1: #2}% + \ifdim \wd\@tempboxa >\hsize + #1: #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip}% +}{} +\def\fnum@lstlisting{% + \lstlistingname + \ifx\lst@@caption\@empty\else~\thelstlisting\fi}% +\def\lst@MakeCaption#1{% + \lst@ifdisplaystyle + \ifx #1t% + \ifx\lst@@caption\@empty\expandafter\lst@HRefStepCounter \else + \expandafter\refstepcounter + \fi {lstlisting}% + \ifx\lst@label\@empty\else \label{\lst@label}\fi + \let\lst@arg\lst@intname \lst@ReplaceIn\lst@arg\lst@filenamerpl + \global\let\lst@name\lst@arg \global\let\lstname\lst@name + \lst@ifnolol\else + \ifx\lst@@caption\@empty + \ifx\lst@caption\@empty + \ifx\lst@intname\@empty \else \def\lst@temp{ }% + \ifx\lst@intname\lst@temp \else + \addcontentsline{lol}{lstlisting}\lst@name + \fi\fi + \fi + \else + \addcontentsline{lol}{lstlisting}% + {\protect\numberline{\thelstlisting}\lst@@caption}% + \fi + \fi + \fi + \ifx\lst@caption\@empty\else + \lst@IfSubstring #1\lst@captionpos + {\begingroup \let\@@vskip\vskip + \def\vskip{\afterassignment\lst@vskip \@tempskipa}% + \def\lst@vskip{\nobreak\@@vskip\@tempskipa\nobreak}% + \par\@parboxrestore\normalsize\normalfont % \noindent (AS) + \ifx #1t\allowbreak \fi + \ifx\lst@title\@empty + \lst@makecaption\fnum@lstlisting{\ignorespaces \lst@caption} + \else + \lst@maketitle\lst@title % (AS) + \fi + \ifx #1b\allowbreak \fi + \endgroup}{}% + \fi + \fi} +\def\lst@makecaption{\@makecaption} +\def\lst@maketitle{\@makecaption\lst@title@dropdelim} +\def\lst@title@dropdelim#1{\ignorespaces} +\AtBeginDocument{% +\@ifundefined{captionlabelfalse}{}{% + \def\lst@maketitle{\captionlabelfalse\@makecaption\@empty}}% +\@ifundefined{caption@startrue}{}{% + \def\lst@maketitle{\caption@startrue\@makecaption\@empty}}% +} +\def\lst@HRefStepCounter#1{% + \begingroup + \c@lstlisting\lst@neglisting + \advance\c@lstlisting\m@ne \xdef\lst@neglisting{\the\c@lstlisting}% + \ifx\hyper@refstepcounter\@undefined\else + \hyper@refstepcounter{#1}% + \fi + \endgroup} +\gdef\lst@neglisting{\z@}% init +\lst@Key{boxpos}{c}{\def\lst@boxpos{#1}} +\def\lst@boxtrue{\let\lst@ifbox\iftrue} +\let\lst@ifbox\iffalse +\lst@Key{float}\relax[\lst@floatplacement]{% + \lstKV@SwitchCases{#1}% + {true&\let\lst@floatdefault\lst@floatplacement + \let\lst@float\lst@floatdefault\\% + false&\let\lst@floatdefault\relax + \let\lst@float\lst@floatdefault + }{\def\lst@next{\@ifstar{\let\lst@beginfloat\@dblfloat + \let\lst@endfloat\end@dblfloat + \lst@KFloat}% + {\let\lst@beginfloat\@float + \let\lst@endfloat\end@float + \lst@KFloat}} + \edef\lst@float{#1}% + \expandafter\lst@next\lst@float\relax}} +\def\lst@KFloat#1\relax{% + \ifx\@empty#1\@empty + \let\lst@float\lst@floatplacement + \else + \def\lst@float{#1}% + \fi} +\lst@Key{floatplacement}{tbp}{\def\lst@floatplacement{#1}} +\lst@AddToHook{PreSet}{\let\lst@float\lst@floatdefault} +\lst@AddToHook{TextStyle}{\let\lst@float\relax} +\let\lst@floatdefault\relax % init +\lst@AddToHook{DeInit}{% + \ifx\lst@float\relax + \global\let\lst@doendpe\@doendpe + \else + \global\let\lst@doendpe\@empty + \fi} +\AtBeginDocument{% +\@ifundefined{c@float@type}% + {\edef\ftype@lstlisting{\ifx\c@figure\@undefined 1\else 4\fi}} + {\edef\ftype@lstlisting{\the\c@float@type}% + \addtocounter{float@type}{\value{float@type}}}% +} +\lst@Key{aboveskip}\medskipamount{\def\lst@aboveskip{#1}} +\lst@Key{belowskip}\medskipamount{\def\lst@belowskip{#1}} +\lst@AddToHook{TextStyle} + {\let\lst@aboveskip\z@ \let\lst@belowskip\z@} +\lst@Key{everydisplay}{}{\def\lst@EveryDisplay{#1}} +\lst@AddToHook{TextStyle}{\let\lst@ifdisplaystyle\iffalse} +\lst@AddToHook{DisplayStyle}{\let\lst@ifdisplaystyle\iftrue} +\let\lst@ifdisplaystyle\iffalse +\def\lst@Init#1{% + \begingroup + \ifx\lst@float\relax\else + \edef\@tempa{\noexpand\lst@beginfloat{lstlisting}[\lst@float]}% + \expandafter\@tempa + \fi + \ifx\lst@multicols\@empty\else + \edef\lst@next{\noexpand\multicols{\lst@multicols}} + \expandafter\lst@next + \fi + \ifhmode\ifinner \lst@boxtrue \fi\fi + \lst@ifbox + \lsthk@BoxUnsafe + \hbox to\z@\bgroup + $\if t\lst@boxpos \vtop + \else \if b\lst@boxpos \vbox + \else \vcenter \fi\fi + \bgroup \par\noindent + \else + \lst@ifdisplaystyle + \lst@EveryDisplay + \par\penalty-50\relax + \vspace\lst@aboveskip + \fi + \fi + \normalbaselines + \abovecaptionskip\lst@abovecaption\relax + \belowcaptionskip\lst@belowcaption\relax + \lst@MakeCaption t% + \lsthk@PreInit \lsthk@Init + \lst@ifdisplaystyle + \global\let\lst@ltxlabel\@empty + \if@inlabel + \lst@ifresetmargins + \leavevmode + \else + \xdef\lst@ltxlabel{\the\everypar}% + \lst@AddTo\lst@ltxlabel{% + \global\let\lst@ltxlabel\@empty + \everypar{\lsthk@EveryLine\lsthk@EveryPar}}% + \fi + \fi + \everypar\expandafter{\lst@ltxlabel + \lsthk@EveryLine\lsthk@EveryPar}% + \else + \everypar{}\let\lst@NewLine\@empty + \fi + \lsthk@InitVars \lsthk@InitVarsBOL + \lst@Let{13}\lst@MProcessListing + \let\lst@Backslash#1% + \lst@EnterMode{\lst@Pmode}{\lst@SelectCharTable}% + \lst@InitFinalize} +\let\lst@InitFinalize\@empty % init +\lst@AddToHook{PreInit} + {\rightskip\z@ \leftskip\z@ \parfillskip=\z@ plus 1fil + \let\par\@@par} +\lst@AddToHook{EveryLine}{}% init +\lst@AddToHook{EveryPar}{}% init +\lst@Key{showlines}f[t]{\lstKV@SetIf{#1}\lst@ifshowlines} +\def\lst@DeInit{% + \lst@XPrintToken \lst@EOLUpdate + \global\advance\lst@newlines\m@ne + \lst@ifshowlines + \lst@DoNewLines + \else + \setbox\@tempboxa\vbox{\lst@DoNewLines}% + \fi + \lst@ifdisplaystyle \par\removelastskip \fi + \lsthk@ExitVars\everypar{}\lsthk@DeInit\normalbaselines\normalcolor + \lst@MakeCaption b% + \lst@ifbox + \egroup $\hss \egroup + \vrule\@width\lst@maxwidth\@height\z@\@depth\z@ + \else + \lst@ifdisplaystyle + \par\penalty-50\vspace\lst@belowskip + \fi + \fi + \ifx\lst@multicols\@empty\else + \def\lst@next{\global\let\@checkend\@gobble + \endmulticols + \global\let\@checkend\lst@@checkend} + \expandafter\lst@next + \fi + \ifx\lst@float\relax\else + \expandafter\lst@endfloat + \fi + \endgroup} +\let\lst@@checkend\@checkend +\newdimen\lst@maxwidth % \global +\lst@AddToHook{InitVars}{\global\lst@maxwidth\z@} +\lst@AddToHook{InitVarsEOL} + {\ifdim\lst@currlwidth>\lst@maxwidth + \global\lst@maxwidth\lst@currlwidth + \fi} +\def\lst@EOLUpdate{\lsthk@EOL \lsthk@InitVarsEOL} +\def\lst@MProcessListing{% + \lst@XPrintToken \lst@EOLUpdate \lsthk@InitVarsBOL + \global\advance\lst@lineno\@ne + \ifnum \lst@lineno>\lst@lastline + \lst@ifdropinput \lst@LeaveMode \fi + \ifx\lst@linerange\@empty + \expandafter\expandafter\expandafter\lst@EndProcessListing + \else + \lst@interrange + \lst@GetLineInterval + \expandafter\expandafter\expandafter\lst@SkipToFirst + \fi + \else + \expandafter\lst@BOLGobble + \fi} +\let\lst@EndProcessListing\endinput +\lst@Key{gobble}{0}{\def\lst@gobble{#1}} +\def\lst@BOLGobble{% + \ifnum\lst@gobble>\z@ + \@tempcnta\lst@gobble\relax + \expandafter\lst@BOLGobble@ +\fi} +\def\lst@BOLGobble@@{% + \ifnum\@tempcnta>\z@ + \expandafter\lst@BOLGobble@ + \fi} +\def\lstenv@BOLGobble@@{% + \lst@IfNextChars\lstenv@endstring{\lstenv@End}% + {\advance\@tempcnta\m@ne \expandafter\lst@BOLGobble@@\lst@eaten}} +\def\lst@BOLGobble@#1{% + \let\lst@next#1% + \ifx \lst@next\relax\else + \ifx \lst@next\lst@MProcessListing\else + \ifx \lst@next\lst@processformfeed\else + \ifx \lst@next\lstenv@backslash + \let\lst@next\lstenv@BOLGobble@@ + \else + \let\lst@next\lst@BOLGobble@@ + \ifx #1\lst@processtabulator + \advance\@tempcnta-\lst@tabsize\relax + \ifnum\@tempcnta<\z@ + \lst@length-\@tempcnta \lst@PreGotoTabStop + \fi + \else + \advance\@tempcnta\m@ne + \fi + \fi \fi \fi \fi + \lst@next} +\def\lst@processformfeed{\lst@ProcessFormFeed} +\def\lst@processtabulator{\lst@ProcessTabulator} +\lst@Key{name}\relax{\def\lst@intname{#1}} +\lst@AddToHookExe{PreSet}{\global\let\lst@intname\@empty} +\lst@AddToHook{PreInit}{% + \let\lst@arg\lst@intname \lst@ReplaceIn\lst@arg\lst@filenamerpl + \global\let\lst@name\lst@arg \global\let\lstname\lst@name} +\def\lst@filenamerpl{_\textunderscore $\textdollar -\textendash} +\def\l@lstlisting#1#2{\@dottedtocline{1}{1.5em}{2.3em}{#1}{#2}} +\lst@UserCommand\lstlistlistingname{Listings} +\lst@UserCommand\lstlistoflistings{\bgroup + \let\contentsname\lstlistlistingname + \let\lst@temp\@starttoc \def\@starttoc##1{\lst@temp{lol}}% + \tableofcontents \egroup} +\@ifundefined{float@listhead}{}{% + \renewcommand*{\lstlistoflistings}{% + \begingroup + \@ifundefined{@restonecoltrue}{}{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + }% + \float@listhead{\lstlistlistingname}% + \parskip\z@\parindent\z@\parfillskip \z@ \@plus 1fil% + \@starttoc{lol}% + \@ifundefined{@restonecoltrue}{}{% + \if@restonecol\twocolumn\fi + }% + \endgroup + }% +} +\AtBeginDocument{% + \@ifundefined{float@addtolists}% + {\gdef\float@addtolists#1{\addtocontents{lol}{#1}}}% + {\let\orig@float@addtolists\float@addtolists + \gdef\float@addtolists#1{% + \addtocontents{lol}{#1}% + \orig@float@addtolists{#1}}}% +}% +\newcommand\lstinline[1][]{% + \leavevmode\bgroup % \hbox\bgroup --> \bgroup + \def\lst@boxpos{b}% + \lsthk@PreSet\lstset{flexiblecolumns,#1}% + \lsthk@TextStyle + \@ifnextchar\bgroup{\afterassignment\lst@InlineG \let\@let@token}% + \lstinline@} +\def\lstinline@#1{% + \lst@Init\relax + \lst@IfNextCharActive{\lst@InlineM#1}{\lst@InlineJ#1}} +\lst@AddToHook{TextStyle}{}% init +\lst@AddToHook{SelectCharTable}{\lst@inlinechars} +\global\let\lst@inlinechars\@empty +\def\lst@InlineM#1{\gdef\lst@inlinechars{% + \lst@Def{`#1}{\lst@DeInit\egroup\global\let\lst@inlinechars\@empty}% + \lst@Def{13}{\lst@DeInit\egroup \global\let\lst@inlinechars\@empty + \PackageError{Listings}{lstinline ended by EOL}\@ehc}}% + \lst@inlinechars} +\def\lst@InlineJ#1{% + \def\lst@temp##1#1{% + \let\lst@arg\@empty \lst@InsideConvert{##1}\lst@arg + \lst@DeInit\egroup}% + \lst@temp} +\def\lst@InlineG{% + \lst@Init\relax + \lst@IfNextCharActive{\lst@InlineM\}}% + {\let\lst@arg\@empty \lst@InlineGJ}} +\def\lst@InlineGJ{\futurelet\@let@token\lst@InlineGJTest} +\def\lst@InlineGJTest{% + \ifx\@let@token\egroup + \afterassignment\lst@InlineGJEnd + \expandafter\let\expandafter\@let@token + \else + \ifx\@let@token\@sptoken + \let\lst@next\lst@InlineGJReadSp + \else + \let\lst@next\lst@InlineGJRead + \fi + \expandafter\lst@next + \fi} +\def\lst@InlineGJEnd{\lst@arg\lst@DeInit\egroup} +\def\lst@InlineGJRead#1{% + \lccode`\~=`#1\lowercase{\lst@lAddTo\lst@arg~}% + \lst@InlineGJ} +\def\lst@InlineGJReadSp#1{% + \lccode`\~=`\ \lowercase{\lst@lAddTo\lst@arg~}% + \lst@InlineGJ#1} +\newcommand\lstMakeShortInline[1][]{% + \def\lst@shortinlinedef{\lstinline[#1]}% + \lstMakeShortInline@}% +\def\lstMakeShortInline@#1{% + \expandafter\ifx\csname lst@ShortInlineOldCatcode\string#1\endcsname\relax + \lst@shortlstinlineinfo{Made }{#1}% + \lst@add@special{#1}% + \expandafter + \xdef\csname lst@ShortInlineOldCatcode\string#1\endcsname{\the\catcode`#1}% + \begingroup + \catcode`\~\active \lccode`\~`#1% + \lowercase{% + \global\expandafter\let + \csname lst@ShortInlineOldMeaning\string#1\endcsname~% + \expandafter\gdef\expandafter~\expandafter{\lst@shortinlinedef#1}}% + \endgroup + \global\catcode`#1\active + \else + \PackageError{Listings}% + {\string\lstMakeShorterInline\ definitions cannot be nested}% + {Use \string\lstDeleteShortInline first.}% + {}% + \fi} +\def\lstDeleteShortInline#1{% + \expandafter\ifx\csname lst@ShortInlineOldCatcode\string#1\endcsname\relax + \PackageError{Listings}% + {#1 is not a short reference for \string\lstinline}% + {Use \string\lstMakeShortInline first.}% + {}% + \else + \lst@shortlstinlineinfo{Deleted }{#1 as}% + \lst@rem@special{#1}% + \global\catcode`#1\csname lst@ShortInlineOldCatcode\string#1\endcsname + \global \expandafter\let% + \csname lst@ShortInlineOldCatcode\string#1\endcsname \relax + \ifnum\catcode`#1=\active + \begingroup + \catcode`\~\active \lccode`\~`#1% + \lowercase{% + \global\expandafter\let\expandafter~% + \csname lst@ShortInlineOldMeaning\string#1\endcsname}% + \endgroup + \fi + \fi} +\def\lst@shortlstinlineinfo#1#2{% + \PackageInfo{Listings}{% + #1\string#2 a short reference for \string\lstinline}} +\def\lst@add@special#1{% + \lst@rem@special{#1}% + \expandafter\gdef\expandafter\dospecials\expandafter + {\dospecials \do #1}% + \expandafter\gdef\expandafter\@sanitize\expandafter + {\@sanitize \@makeother #1}} +\def\lst@rem@special#1{% + \def\do##1{% + \ifnum`#1=`##1 \else \noexpand\do\noexpand##1\fi}% + \xdef\dospecials{\dospecials}% + \begingroup + \def\@makeother##1{% + \ifnum`#1=`##1 \else \noexpand\@makeother\noexpand##1\fi}% + \xdef\@sanitize{\@sanitize}% + \endgroup} +\def\lst@MakePath#1{\ifx\@empty#1\@empty\else\lst@MakePath@#1/\@nil/\fi} +\def\lst@MakePath@#1/{#1/\lst@MakePath@@} +\def\lst@MakePath@@#1/{% + \ifx\@nil#1\expandafter\@gobble + \else \ifx\@empty#1\else #1/\fi \fi + \lst@MakePath@@} +\lst@Key{inputpath}{}{\edef\lst@inputpath{\lst@MakePath{#1}}} +\def\lstinputlisting{% + \begingroup \lst@setcatcodes \lst@inputlisting} +\newcommand\lst@inputlisting[2][]{% + \endgroup + \def\lst@set{#1}% + \IfFileExists{\lst@inputpath#2}% + {\expandafter\lst@InputListing\expandafter{\lst@inputpath#2}}% + {\filename@parse{\lst@inputpath#2}% + \edef\reserved@a{\noexpand\lst@MissingFileError + {\filename@area\filename@base}% + {\ifx\filename@ext\relax tex\else\filename@ext\fi}}% + \reserved@a}% + \lst@doendpe \@newlistfalse \ignorespaces} +\def\lst@MissingFileError#1#2{% + \typeout{^^J! Package Listings Error: File `#1(.#2)' not found.^^J% + ^^JType X to quit or to proceed,^^J% + or enter new name. (Default extension: #2)^^J}% + \message{Enter file name: }% + {\endlinechar\m@ne \global\read\m@ne to\@gtempa}% + \ifx\@gtempa\@empty \else + \def\reserved@a{x}\ifx\reserved@a\@gtempa\batchmode\@@end\fi + \def\reserved@a{X}\ifx\reserved@a\@gtempa\batchmode\@@end\fi + \filename@parse\@gtempa + \edef\filename@ext{% + \ifx\filename@ext\relax#2\else\filename@ext\fi}% + \edef\reserved@a{\noexpand\IfFileExists % + {\filename@area\filename@base.\filename@ext}% + {\noexpand\lst@InputListing % + {\filename@area\filename@base.\filename@ext}}% + {\noexpand\lst@MissingFileError + {\filename@area\filename@base}{\filename@ext}}}% + \expandafter\reserved@a % + \fi} +\let\lst@ifdraft\iffalse +\DeclareOption{draft}{\let\lst@ifdraft\iftrue} +\DeclareOption{final}{\let\lst@ifdraft\iffalse} +\lst@AddToHook{PreSet} + {\lst@ifdraft + \let\lst@ifprint\iffalse + \@gobbletwo\fi\fi + \fi} +\def\lst@InputListing#1{% + \begingroup + \lsthk@PreSet \gdef\lst@intname{#1}% + \expandafter\lstset\expandafter{\lst@set}% + \lsthk@DisplayStyle + \catcode\active=\active + \lst@Init\relax \let\lst@gobble\z@ + \lst@SkipToFirst + \lst@ifprint \def\lst@next{\input{#1}}% + \else \let\lst@next\@empty \fi + \lst@next + \lst@DeInit + \endgroup} +\def\lst@SkipToFirst{% + \ifnum \lst@lineno<\lst@firstline + \lst@BeginDropInput\lst@Pmode + \lst@Let{13}\lst@MSkipToFirst + \lst@Let{10}\lst@MSkipToFirst + \else + \expandafter\lst@BOLGobble + \fi} +\def\lst@MSkipToFirst{% + \global\advance\lst@lineno\@ne + \ifnum \lst@lineno=\lst@firstline + \lst@LeaveMode \global\lst@newlines\z@ + \lsthk@InitVarsBOL + \expandafter\lst@BOLGobble + \fi} +\def\lstenv@DroppedWarning{% + \ifx\lst@dropped\@undefined\else + \PackageWarning{Listings}{Text dropped after begin of listing}% + \fi} +\let\lst@dropped\@undefined % init +\begingroup \lccode`\~=`\^^M\lowercase{% +\gdef\lstenv@Process#1{% + \ifx~#1% + \lstenv@DroppedWarning \let\lst@next\lst@SkipToFirst + \else\ifx^^J#1% + \lstenv@DroppedWarning \let\lst@next\lstenv@ProcessJ + \else + \let\lst@dropped#1\let\lst@next\lstenv@Process + \fi \fi + \lst@next} +}\endgroup +\def\lstenv@ProcessJ{% + \let\lst@arg\@empty + \ifx\@currenvir\lstenv@name + \expandafter\lstenv@ProcessJEnv + \else + \expandafter\def\expandafter\lst@temp\expandafter##1% + \csname end\lstenv@name\endcsname + {\lst@InsideConvert{##1}\lstenv@ProcessJ@}% + \expandafter\lst@temp + \fi} +\begingroup \lccode`\~=`\\\lowercase{% +\gdef\lstenv@ProcessJ@{% + \lst@lExtend\lst@arg + {\expandafter\ \expandafter~\lstenv@endstring}% + \catcode10=\active \lst@Let{10}\lst@MProcessListing + \lst@SkipToFirst \lst@arg} +}\endgroup +\def\lstenv@ProcessJEnv#1\end#2{\def\lst@temp{#2}% + \ifx\lstenv@name\lst@temp + \lst@InsideConvert{#1}% + \expandafter\lstenv@ProcessJ@ + \else + \lst@InsideConvert{#1\\end\{#2\}}% + \expandafter\lstenv@ProcessJEnv + \fi} +\def\lstenv@backslash{% + \lst@IfNextChars\lstenv@endstring + {\lstenv@End}% + {\expandafter\lsts@backslash \lst@eaten}}% +\def\lstenv@End{% + \ifx\@currenvir\lstenv@name + \edef\lst@next{\noexpand\end{\lstenv@name}}% + \else + \def\lst@next{\csname end\lstenv@name\endcsname}% + \fi + \lst@next} +\lst@UserCommand\lstnewenvironment#1#2#{% + \@ifundefined{#1}% + {\let\lst@arg\@empty + \lst@XConvert{#1}\@nil + \expandafter\lstnewenvironment@\lst@arg{#1}{#2}}% + {\PackageError{Listings}{Environment `#1' already defined}\@eha + \@gobbletwo}} +\def\@tempa#1#2#3{% +\gdef\lstnewenvironment@##1##2##3##4##5{% + \begingroup + \global\@namedef{end##2}{\lstenv@Error{##2}}% + \global\@namedef{##2}{\def\lstenv@name{##2}% + \begingroup \lst@setcatcodes \catcode\active=\active + \csname##2@\endcsname}% + \let\l@ngrel@x\global + \let\@xargdef\lstenv@xargdef + \expandafter\new@command\csname##2@\endcsname##3% + {\lsthk@PreSet ##4% + \ifx\@currenvir\lstenv@name + \def\lstenv@endstring{#1#2##1#3}% + \else + \def\lstenv@endstring{#1##1}% + \fi + \@namedef{end##2}{\lst@DeInit ##5\endgroup + \lst@doendpe \@ignoretrue}% + \lsthk@DisplayStyle + \let\lst@EndProcessListing\lstenv@SkipToEnd + \lst@Init\lstenv@backslash + \lst@ifprint + \expandafter\expandafter\expandafter\lstenv@Process + \else + \expandafter\lstenv@SkipToEnd + \fi + \lst@insertargs}% + \endgroup}% +} +\let\lst@arg\@empty \lst@XConvert{end}\{\}\@nil +\expandafter\@tempa\lst@arg +\let\lst@insertargs\@empty +\def\lstenv@xargdef#1{ + \expandafter\lstenv@xargdef@\csname\string#1\endcsname#1} +\def\lstenv@xargdef@#1#2[#3][#4]#5{% + \@ifdefinable#2{% + \gdef#2{% + \ifx\protect\@typeset@protect + \expandafter\lstenv@testopt + \else + \@x@protect#2% + \fi + #1% + {#4}}% + \@yargdef + #1% + \tw@ + {#3}% + {#5}}} +\long\def\lstenv@testopt#1#2{% + \@ifnextchar[{\catcode\active5\relax \lstenv@testopt@#1}% + {#1[{#2}]}} +\def\lstenv@testopt@#1[#2]{% + \catcode\active\active + #1[#2]} +\begingroup \lccode`\~=`\\\lowercase{% +\gdef\lstenv@SkipToEnd{% + \long\expandafter\def\expandafter\lst@temp\expandafter##\expandafter + 1\expandafter~\lstenv@endstring{\lstenv@End}% + \lst@temp} +}\endgroup +\def\lstenv@Error#1{\PackageError{Listings}{Extra \string\end#1}% + {I'm ignoring this, since I wasn't doing a \csname#1\endcsname.}} +\begingroup \lccode`\~=`\^^M\lowercase{% +\gdef\lst@TestEOLChar#1{% + \def\lst@insertargs{#1}% + \ifx ~#1\@empty \else + \ifx^^J#1\@empty \else + \global\let\lst@intname\lst@insertargs + \let\lst@insertargs\@empty + \fi \fi} +}\endgroup +\lstnewenvironment{lstlisting}[2][] + {\lst@TestEOLChar{#2}% + \lstset{#1}% + \csname\@lst @SetFirstNumber\endcsname} + {\csname\@lst @SaveFirstNumber\endcsname} +\lst@Key{fancyvrb}\relax[t]{% + \lstKV@SetIf{#1}\lst@iffancyvrb + \lstFV@fancyvrb} +\ifx\lstFV@fancyvrb\@undefined + \gdef\lstFV@fancyvrb{\lst@RequireAspects{fancyvrb}\lstFV@fancyvrb} +\fi +\@ifundefined{ocp}{} + {\lst@AddToHook{OutputBox}% + {\let\lst@ProcessLetter\@firstofone + \let\lst@ProcessDigit\@firstofone + \let\lst@ProcessOther\@firstofone}} +\DeclareOption*{\expandafter\lst@ProcessOption\CurrentOption\relax} +\def\lst@ProcessOption#1#2\relax{% + \ifx #1!% + \lst@DeleteKeysIn\lst@loadaspects{#2}% + \else + \lst@lAddTo\lst@loadaspects{,#1#2}% + \fi} +\@ifundefined{lst@loadaspects} + {\def\lst@loadaspects{strings,comments,escape,style,language,% + keywords,labels,lineshape,frames,emph,index}% + }{} +%\InputIfFileExists{lstpatch.sty}{}{} +\let\lst@ifsavemem\iffalse +\DeclareOption{savemem}{\let\lst@ifsavemem\iftrue} +\DeclareOption{noaspects}{\let\lst@loadaspects\@empty} +\ProcessOptions +\lst@RequireAspects\lst@loadaspects +\let\lst@loadaspects\@empty +\lst@UseHook{SetStyle}\lst@UseHook{EmptyStyle} +\lst@UseHook{SetLanguage}\lst@UseHook{EmptyLanguage} +\InputIfFileExists{listings.cfg}{}{} +\InputIfFileExists{lstlocal.cfg}{}{} +\endinput +%% +%% End of file `listings.sty'. \ No newline at end of file diff --git a/vu-cs-standard-thesis/natbib.sty b/vu-cs-standard-thesis/natbib.sty new file mode 100644 index 0000000..c3c926c --- /dev/null +++ b/vu-cs-standard-thesis/natbib.sty @@ -0,0 +1,724 @@ +%% +%% This is file `natbib.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% natbib.dtx (with options: `package,all') +%% +%% Full documentation can be obtained by LaTeXing the source file: +%% natbib.dtx. +%% +%% Only a few abbreviated comments remain here to describe the usage. +%% +\NeedsTeXFormat{LaTeX2e}[1994/06/01] +\ProvidesPackage{natbib} + [1998/07/14 6.8c (PWD)] +%%------------------------------------------------------------------- +%% NOTICE: +%% This file may be used for non-profit purposes. +%% It may not be distributed in exchange for money, +%% other than distribution costs. +%% +%% The author provides it `as is' and does not guarantee it in any way. +%% +%% Natbib coding copyright (C) 1994--1998 Patrick W. Daly +%% Max-Planck-Institut f\"ur Aeronomie +%% Max-Planck-Str. 2 +%% D-37191 Katlenburg-Lindau +%% Germany +%% +%% E-mail: daly@linmpi.mpg.de +%%----------------------------------------------------------- + % This package reimplements the LaTeX \cite command to be used for various + % citation styles, both author-year and numerical. It accepts BibTeX + % output intended for many other packages, and therefore acts as a + % general, all-purpose citation-style interface. + % + % With standard numerical .bst files, only numerical citations are + % possible. With an author-year .bst file, both numerical and + % author-year citations are possible. + % + % If author-year citations are selected, \bibitem must have one of the + % following forms: + % \bibitem[Jones et al.(1990)]{key}... + % \bibitem[Jones et al.(1990)Jones, Baker, and Williams]{key}... + % \bibitem[Jones et al., 1990]{key}... + % \bibitem[\protect\citeauthoryear{Jones, Baker, and Williams}{Jones + % et al.}{1990}]{key}... + % \bibitem[\protect\citeauthoryear{Jones et al.}{1990}]{key}... + % \bibitem[\protect\astroncite{Jones et al.}{1990}]{key}... + % \bibitem[\protect\citename{Jones et al., }1990]{key}... + % \harvarditem[Jones et al.]{Jones, Baker, and Williams}{1990}{key}... + % + % This is either to be made up manually, or to be generated by an + % appropriate .bst file with BibTeX. + % Author-year mode || Numerical mode + % Then, \citet{key} ==>> Jones et al. (1990) || Jones et al. [21] + % \citep{key} ==>> (Jones et al., 1990) || [21] + % Multiple citations as normal: + % \citep{key1,key2} ==>> (Jones et al., 1990; Smith, 1989) || [21,24] + % or (Jones et al., 1990, 1991) || [21,24] + % or (Jones et al., 1990a,b) || [21,24] + % \cite{key} is the equivalent of \citet{key} in author-year mode + % and of \citep{key} in numerical mode + % Full author lists may be forced with \citet* or \citep*, e.g. + % \citep*{key} ==>> (Jones, Baker, and Williams, 1990) + % Optional notes as: + % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2) + % \citep[e.g.,][]{key} ==>> (e.g., Jones et al., 1990) + % \citep[see][pg. 34]{key}==>> (see Jones et al., 1990, pg. 34) + % (Note: in standard LaTeX, only one note is allowed, after the ref. + % Here, one note is like the standard, two make pre- and post-notes.) + % \citealt{key} ==>> Jones et al. 1990 + % \citealt*{key} ==>> Jones, Baker, and Williams 1990 + % \citealp{key} ==>> Jones et al., 1990 + % \citealp*{key} ==>> Jones, Baker, and Williams, 1990 + % Additional citation possibilities (both author-year and numerical modes) + % \citeauthor{key} ==>> Jones et al. + % \citeauthor*{key} ==>> Jones, Baker, and Williams + % \citeyear{key} ==>> 1990 + % \citeyearpar{key} ==>> (1990) + % \citetext{priv. comm.} ==>> (priv. comm.) + % Note: full author lists depends on whether the bib style supports them; + % if not, the abbreviated list is printed even when full requested. + % + % Defining the citation style of a given bib style: + % Use \bibpunct (in the preamble only) with 6 mandatory arguments: + % 1. opening bracket for citation + % 2. closing bracket + % 3. citation separator (for multiple citations in one \cite) + % 4. the letter n for numerical styles, s for superscripts + % else anything for author-year + % 5. punctuation between authors and date + % 6. punctuation between years (or numbers) when common authors missing + % One optional argument is the character coming before post-notes. It + % appears in square braces before all other arguments. May be left off. + % Example (and default) \bibpunct[,]{(}{)}{;}{a}{,}{,} + % + % To make this automatic for a given bib style, named newbib, say, make + % a local configuration file, natbib.cfg, with the definition + % \newcommand{\bibstyle@newbib}{\bibpunct...} + % Then the \bibliographystyle{newbib} will cause \bibstyle@newbib to + % be called on THE NEXT LATEX RUN (via the aux file). + % + % Such preprogrammed definitions may be invoked in the text (preamble only) + % by calling \citestyle{newbib}. This is only useful if the style specified + % differs from that in \bibliographystyle. + % + % With \citeindextrue and \citeindexfalse, one can control whether the + % \cite commands make an automatic entry of the citation in the .idx + % indexing file. For this, \makeindex must also be given in the preamble. + % + % LaTeX2e Options: (for selecting punctuation) + % round - round parentheses are used (default) + % square - square brackets are used [option] + % curly - curly braces are used {option} + % angle - angle brackets are used