diff options
| author | Mateusz Kwiatkowski <mati.rewa@gmail.com> | 2025-06-25 11:16:10 +0000 |
|---|---|---|
| committer | node <node@git-bridge-prod-0> | 2025-06-25 11:22:03 +0000 |
| commit | 3e8e2ea55ae43a6463f8f1d793f132e09fa951ce (patch) | |
| tree | 7885aedd39b6f201cbe7ff3e39ac9743befdfee8 | |
Update on Overleaf.
50 files changed, 19343 insertions, 0 deletions
diff --git a/vu-cs-standard-thesis/0_frontmatter/Icon♪ b/vu-cs-standard-thesis/0_frontmatter/Icon♪ new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/vu-cs-standard-thesis/0_frontmatter/Icon♪ 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♪ b/vu-cs-standard-thesis/0_frontmatter/figures/Icon♪ new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/vu-cs-standard-thesis/0_frontmatter/figures/Icon♪ diff --git a/vu-cs-standard-thesis/0_frontmatter/figures/uva_logo.jpg b/vu-cs-standard-thesis/0_frontmatter/figures/uva_logo.jpg Binary files differnew file mode 100644 index 0000000..63d1731 --- /dev/null +++ b/vu-cs-standard-thesis/0_frontmatter/figures/uva_logo.jpg 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
<</Metadata 2 0 R/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<</Length 36517/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00 "> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <dc:format>application/pdf</dc:format> + <dc:title> + <rdf:Alt> + <rdf:li xml:lang="x-default">VUlogo_NL_Wit_FC</rdf:li> + </rdf:Alt> + </dc:title> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmp="http://ns.adobe.com/xap/1.0/" + xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"> + <xmp:MetadataDate>2011-01-12T18:22:35+01:00</xmp:MetadataDate> + <xmp:ModifyDate>2011-01-12T18:22:35+01:00</xmp:ModifyDate> + <xmp:CreateDate>2011-01-12T18:22:35+01:00</xmp:CreateDate> + <xmp:CreatorTool>Adobe Illustrator CS5</xmp:CreatorTool> + <xmp:Thumbnails> + <rdf:Alt> + <rdf:li rdf:parseType="Resource"> + <xmpGImg:width>256</xmpGImg:width> + <xmpGImg:height>76</xmpGImg:height> + <xmpGImg:format>JPEG</xmpGImg:format> + <xmpGImg:image>/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==</xmpGImg:image> + </rdf:li> + </rdf:Alt> + </xmp:Thumbnails> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" + xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" + xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"> + <xmpMM:InstanceID>uuid:41a47aa5-a1d4-f44d-ac80-eb30b96069bb</xmpMM:InstanceID> + <xmpMM:DocumentID>xmp.did:00945102202068118C14A1540B7FBEB3</xmpMM:DocumentID> + <xmpMM:OriginalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</xmpMM:OriginalDocumentID> + <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass> + <xmpMM:DerivedFrom rdf:parseType="Resource"> + <stRef:instanceID>uuid:2812ac19-44ea-ea41-89c4-55b896f46a57</stRef:instanceID> + <stRef:documentID>xmp.did:FB7F11740720681188C6B5EE3D81CA80</stRef:documentID> + <stRef:originalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</stRef:originalDocumentID> + <stRef:renditionClass>proof:pdf</stRef:renditionClass> + </xmpMM:DerivedFrom> + <xmpMM:History> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:D27F11740720681191099C3B601C4548</stEvt:instanceID> + <stEvt:when>2008-04-17T14:19:15+05:30</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F1174072068118D4ED246B3ADB1C6</stEvt:instanceID> + <stEvt:when>2008-05-15T16:23:06-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FA7F1174072068118D4ED246B3ADB1C6</stEvt:instanceID> + <stEvt:when>2008-05-15T17:10:45-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:EF7F117407206811A46CA4519D24356B</stEvt:instanceID> + <stEvt:when>2008-05-15T22:53:33-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F07F117407206811A46CA4519D24356B</stEvt:instanceID> + <stEvt:when>2008-05-15T23:07:07-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T10:35:43-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T10:40:59-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FA7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:26:55-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FB7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:29:01-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FC7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:29:20-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FD7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:30:54-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FE7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:31:22-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:B233668C16206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T12:23:46-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:B333668C16206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T13:27:54-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:B433668C16206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T13:46:13-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F11740720681197C1BF14D1759E83</stEvt:instanceID> + <stEvt:when>2008-05-16T15:47:57-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F87F11740720681197C1BF14D1759E83</stEvt:instanceID> + <stEvt:when>2008-05-16T15:51:06-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F11740720681197C1BF14D1759E83</stEvt:instanceID> + <stEvt:when>2008-05-16T15:52:22-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FA7F117407206811B628E3BF27C8C41B</stEvt:instanceID> + <stEvt:when>2008-05-22T13:28:01-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FF7F117407206811B628E3BF27C8C41B</stEvt:instanceID> + <stEvt:when>2008-05-22T16:23:53-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:07C3BD25102DDD1181B594070CEB88D9</stEvt:instanceID> + <stEvt:when>2008-05-28T16:45:26-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F87F1174072068119098B097FDA39BEF</stEvt:instanceID> + <stEvt:when>2008-06-02T13:25:25-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F117407206811BB1DBF8F242B6F84</stEvt:instanceID> + <stEvt:when>2008-06-09T14:58:36-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F117407206811ACAFB8DA80854E76</stEvt:instanceID> + <stEvt:when>2008-06-11T14:31:27-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:0180117407206811834383CD3A8D2303</stEvt:instanceID> + <stEvt:when>2008-06-11T22:37:35-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F117407206811818C85DF6A1A75C3</stEvt:instanceID> + <stEvt:when>2008-06-27T14:40:42-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:0680117407206811A12490AADA3FBECC</stEvt:instanceID> + <stEvt:when>2010-09-09T10:05:46+02:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:0780117407206811A12490AADA3FBECC</stEvt:instanceID> + <stEvt:when>2010-09-09T10:07:07+02:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FB7F11740720681188C6B5EE3D81CA80</stEvt:instanceID> + <stEvt:when>2010-11-19T11:54:42+01:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS5</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:00945102202068118C14A1540B7FBEB3</stEvt:instanceID> + <stEvt:when>2011-01-12T18:22:31+01:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS5</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + </rdf:Seq> + </xmpMM:History> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/"> + <illustrator:StartupProfile>Print</illustrator:StartupProfile> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" + xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" + xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"> + <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint> + <xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency> + <xmpTPg:NPages>1</xmpTPg:NPages> + <xmpTPg:MaxPageSize rdf:parseType="Resource"> + <stDim:w>74.250076</stDim:w> + <stDim:h>22.056535</stDim:h> + <stDim:unit>Millimeters</stDim:unit> + </xmpTPg:MaxPageSize> + <xmpTPg:PlateNames> + <rdf:Seq> + <rdf:li>Cyan</rdf:li> + <rdf:li>Magenta</rdf:li> + <rdf:li>Black</rdf:li> + </rdf:Seq> + </xmpTPg:PlateNames> + <xmpTPg:SwatchGroups> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Default Swatch Group</xmpG:groupName> + <xmpG:groupType>0</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>White</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>Black</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>100.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=100 M=30 Y=0 K=0</xmpG:swatchName> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:tint>100.000000</xmpG:tint> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>30.000002</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + </rdf:Seq> + </xmpTPg:SwatchGroups> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> + <pdf:Producer>Adobe PDF library 9.90</pdf:Producer> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?>
endstream
endobj
3 0 obj
<</Count 1/Kids[5 0 R]/Type/Pages>>
endobj
5 0 obj
<</ArtBox[0.0 0.0 210.473 62.5225]/BleedBox[0.0 0.0 210.473 62.5225]/Contents 6 0 R/LastModified(D:20110112182235+01'00')/MediaBox[0.0 0.0 210.473 62.5225]/Parent 3 0 R/PieceInfo<</Illustrator 7 0 R>>/Resources<</ExtGState<</GS0 8 0 R>>/Properties<</MC0<</Color[20224 32768 65535]/Dimmed false/Editable true/Preview true/Printed true/Title(Layer 1)/Visible true>>>>>>/Thumb 9 0 R/TrimBox[0.0 0.0 210.473 62.5225]/Type/Page>>
endobj
6 0 obj
<</Filter/FlateDecode/Length 5405>>stream
+HlW˪d
߯8?PSv0^xm
6)CɗO_/\?\_rV65/?}îreez{)~]7︭[qVv~#v#Kn~fzO_u_h/ݣU[Sj^{䁳LsYwvMŶ9kڼR6ץIPrlH];y{?|]{!q-ck}^g݊x]PږbroxG~Eoku-m2"0aYi ܆]&Xq~`qX0tޯ~O +C76n_6JTr
CLQ_-WBW
+33E*]0 +%<QJ%Tև|D2$=Ůuc +]djCδ(XKc|+v+NJ,=Rr?Yaۧ>"8]Fn+^#OzW6AcL4SXjr#E^ +ĵXΟM<huiAN 04+lm֍fH:$hKAֲYxePIEjkUo9hft=Əhj` Dlg#⠕@ q~xB8M- +x& toꎢY,0D_Dc:f?Q6x+zxéw"\_Ht&g̰kP8v`Ͻ[`9Cs7VړU>9O +!\>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 +45nĦ\X+'ʫ]IR8S_1sL==[k*H<K.Rʣ?Lh/!G("8F,yVhqzy9V.u +50>2N"MkH5!p_Mưgpe8M[3]5qE25/E.B31.n]0@zQm MJ4GKaW) +ߨ +-U(1qb +дM;v ] +7G+
ȳ}dj=zJ^YMug}+bM^"nOww@#>tbEhݼ* +Kbf?sQ]
0tRg~?` +-+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^Ns78sytrImw`~!S"WU= +Wɠ/{>JrHz+6lޏ +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%!CR +u(aǛ&BdR"vY +dILD4K1/`IMsQ<N)9YGD@tI.oeD()#S2b)#J^ݥ3ґҲl)?4) hc?DkNɇj2&so[rRI'z"IO$'2\e+D-& kDǽГ~艐`I;夝zbsQM9#F7TADAwez4zs&W`O1)1'ߏ9֯LKf)Gfm*[2,CQW!!Kz"WGSY8ze$52OjWġ1*#\WgKYiKH8[1fF±,"BFM +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
<</Filter[/ASCII85Decode/FlateDecode]/Length 428>>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#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1 +VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH< +PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~>
endstream
endobj
8 0 obj
<</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>>
endobj
7 0 obj
<</LastModified(D:20110112182235+01'00')/Private 12 0 R>>
endobj
12 0 obj
<</AIMetaData 13 0 R/AIPDFPrivateData1 14 0 R/AIPDFPrivateData10 15 0 R/AIPDFPrivateData2 16 0 R/AIPDFPrivateData3 17 0 R/AIPDFPrivateData4 18 0 R/AIPDFPrivateData5 19 0 R/AIPDFPrivateData6 20 0 R/AIPDFPrivateData7 21 0 R/AIPDFPrivateData8 22 0 R/AIPDFPrivateData9 23 0 R/ContainerVersion 9/CreatorVersion 15/NumBlock 10/RoundtripVersion 15>>
endobj
13 0 obj
<</Length 1039>>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
<</Length 5470>>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
<</Filter[/FlateDecode]/Length 11724>>stream
+HWv@aHH(cHD28si}[39ӭjut8('b^&վ~fލ7V`xL2)F
6b`[8r[dx8*y*rL$+T)x}:36%r8!<$vLWyDn(V\bԹVVA2IL=SOVұﴵH5Yi`'cGS3MyI8$ +?@δ(C$ҍ$ď& 榄y[ +bhPpU"A༯=.@S!ANwOiM +`Ѩ;:Ia<ԲY|pݎ?Q1?0fC`9Rn0]0c십OYw4M0x+&(H[ x!)_TR]-1*`,vsvq}[cRG}L|Kcn~5L]@ +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У +)>( +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Ҙrv<o?H×6.B<W֦<vCK=( +uJ[rS^zl-<d6jgS׳wUd7tG#ڍ7 +}8Z_|Z'X:Ao+ n!M`?Gnx|
8 +܀6<*l,laFpH{ +0CncDt0`ƎR ]SӬ0& b=i~JEhb5FnꡑQpy3t*Gʗ)XKbLFKZN;*?&|CzqZ'c8WUߩeU +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ۣ/믦)3<d $T&HF;;QAS[O'pR'hc+:
TA8a\+C +S~ +OPS! +@fy/{!t"X/Q!ˏ* +BB<>BbE'8Fc0Nx"9p' sQp/o|"'9}}fRRo8KiU1u
\h +$Af_wU, Wa4>G*=2x_W C)À~לpw\(8Y^3}?D2d>L_^̽DCfGX9}ݟr==UJ6^G +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=S0wZqzpwRTǣ?zG|ZcoVJ֏+KݍeͮtoYK*b\ckͧWmMގҫS @i +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,jLN +R/8CJ!FVa,M$BTRBH r +,9!
aT;TbD, CQH~QC\ +YQ{&xBdr(g(K˕L9ɔ HxA&\(ޘD>`D +vkoos\܇41Bkz A͵9@;S4^DBYnmS>5\kH9{߅-^qB^0]=J +e>D`Jq)1ZBĉDi@W1'ҽe;^M<5i|<to>eϣ'^|>uްaŌkjzz >#ؠcyhx5~3"zsiWPeWs-[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 ! +2'{JFdr4=֨u纡R+ {"Ԧv<m5ոly`b<*$DfXA"L3a_.lt<@k:u?*w}TbijY wz:*WoWٺ&ode7 +} + +Džj v"o=JxKQv +4g>>i36X"de%E}FNгA*߱d!Ia9u<\krijs7#;7E7Ԝ+%-E`3>K= +$Wc{SDOH{&r+C0W珺T^so r^ޠC-*锫@1Kc*CL"3$-2>$7CHeF3eslO4'LJuZc<kST$ֺEx6]aoY |\_A趰tCO\<P3ic:}6: 8Ra!jv'M$aG7.9Z_Ov{uaxߨhLKqt3%-fvX/)7~<+nTXpr(Oz%Ծ^8P]7a[ղdچ4b&g+ŶKO̙ȱy}tX=Q $#ܷPDn羶 +SOp<T`17IdVrZlԸ֝Tmt( *KU}BU%'q==4m\ȞL{[F=t4H`+sj +tƖ>`pIZJVB&=y V
yT9zZk+C,A-GRjNvN*DġykmxSP8VtU- yĿClÆtȪ1P[xҒhtIu>0@rZ!`vu{#m)HbZ8x_"%QoNSKʆRJ,cY8C0GwCP^}9c4*&#I PyR93<I`
W@qj:VF꼸VJ]J^N6T
KX'5*Q# +Q<95@.-LkR{xE8N(oBۍՕSgY䔔^w2k'8
G+ϸ:54mBjjזp~mlOt8-loczWWۚtk/o(\>+Kmy߰mm
?o}O&S)-/vbgg'R+viGV]a'9IcW +F3M#1eC]>Ѿ;,1=Q_[4xϮpjC}+NGNbD˵|;|~;~7fev1c)3B@h{I4r-r$/Q6HFH kE3<?U
5/h)3\{zgzIDzPCMs!5J% +zM!(ZX8Rdo/!|"NDbU +W]̬564,z"4!JSzո]9Rqᴩ~Ժ +$&2-t{ n6"ջ*~u rSZv#7b?el +i/etڸ.Ը"=N]R0?lx#i;OQd'-;&`釽/z2EncJc3A&ϢTQ6.6r٪1o \o=ԇd +Uh+~Y]VkΚ1")疷Rs+Z1[!"L
^r9dބ5u"6&qQiwoqԵTH,VN;ڀ|0c7r8JLc,)Elm4CX2*%ՒwSӾK5xЅd"b'Q3GBWX)S9ƞH)uhsҙKTgZ3MPvP*t6cuC֬ⱲGt;KtZ(/WlXN6Wdˌiɒ`tJyb= 2 +jZKdCZ~7[mÃcQiTPMikAVWnj,*f+هwMnE\]C@S#O
椏b%ƥn֑nlƐ5Es2v?ңݖo +Hn:`S vMڍb`j-=$ˇۋS}H,(oɬ`X٪OorUwGàLzYT7]~?/<G꺚y=XM'AV([a?rsE;+fe_שhKrVi*TrC]3j7pʍփ8bL¼Quuy]]尚We%=ˮѓt]I9^d+ʹ~rʣiz[gonrBXzsYOOhW+<(Vr.[k2p8|g/dy8..|5"\>ne#"}qFV
bk3cDvTТ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呞#<!̑N+c +H"KI&Jw%&@@$ 0b)(VYIll,L܉
( +1( Ml7LOp⏰YmJZHsԄ17ăX +G*REl +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[3z4Qdp!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!lDYYEcnf^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̦">F9TBZ֭?BN7L.ݨ|m7amЭ@ߎzFw-!şs{*ͺs9eoPkעgɷUrjJ2EމYJmgeϪM""蕔gvgΊ*ϣ*Z-2[Dq$c١+inHbZ3Vt{AZ-L7q\:Z+Q'8 +s@1)7I_nv9Ch8A굤q@?.iNٚ-
uBuƂlPUjQGecB([,% a,U5H8X8 8CIhFPUyӲPtD͝ao6?;4kHֲd./+H)( y]8Lu-)/٫
{U5yk$g,$att-!+-]+qr 6oJi*
Z݅q(] HN\
V9?mmAc{rۯ}r/ˁ˲+eJD/&E" 56h7J#e`.wF괵[iøa8r;!-aT*}.^X.ܗ ߌB]Wy^nHv"
c8ߐONX7G</6pfLEWf3; B(>H/C>|#QaJޗ?g9?,s_GkG䧚K֏K^)z@t>DIi"sJWDvsnR=j_k&3&Kgq
lG=oT?ړh
'ԨKVŬ؎sTuKi{@7"%9CfHN08~!W +LěYb-(I>GO=:e5ʫX(zu~9w +oA@D@SEAQfQ;
Y❖ .SQ*K2J+:LGxtl#!E>"촗FI7c\CJ7CN> O +!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:o6gw-$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? +ސf[:p{j_,"v%!ݗp8nO#
.L)#c_ju(zhTԇ/A[k +C[4Дu1oPwib2|h +!:4dFyhXh5,4g.k)VL,E߂qF!zY)
PU!h!r 4@Fgԩ'誃Z謆*讄A
lz N5@g;k"(e
p3j88u
p3Z8Xa9
"3G*EH +͠}7;w
rxH5,gBTxJ}J}J}J}_a<GM +$t- 6BaPL"@R'݈PҳӕlNvm`tuxl45't)&&qW: +'Z
qhGD>>11 +Y#61gHov^o{&'#['mKR8C0Eis
AWR(g0?.o_~FncQ ;x ")d(JYEF/LsxIfgUeD{//k~E_*~$Gr~$7o(gK(IAQ2Bf3@vRT4
$ UHwHY4m;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"l2=}61^:tCÌ5>='OKXB3>g.)c }\R5"7ibg;*gv54JpI:^qi+<=tښc䯕'PrXǒ%K61fvt$MFW$xr\&buvQ}hS':AU֨D +
I_<w:ȥ_2FF3c8ffr5I_;%3<;н٩=N=toyv! +r,8$B,^yh҆2Jq虓yCYЇ/=F9|E=Z_ToE*x_kp\IǴA_e*ԭ u4$j˭Pcc)Q(z<F=u+Es=kE]tJ#'(ʀζC/Y8a6ka1U
Y(p9u|#h~2݃A_nc0_ +)b8*66C33Nqgb+FhfmŌ9$ƹz^|Cg8M +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ѫ=<UoQ]x4Nn':mf :1כc߰-[3ifkuv6PR 5A)Y[\@oGq4ng?/slJ4k?yw~_Ӊlq#X+̋_%,! +TS0BXÆ`,'^kl@yOo%"[I`U:}H"Ql.k"E%0,04ꪣ#+GDJ"E$Y&:QNRvՒRRk&*h֍uSdF=f>սF]? HNy\Rd $ZIE0X'$:Y$=ol2Hee$I)IIvuS+'k'-'ˇX?QAa$fTie$]%ʪUF,(Jo
I]xrAo|5tٻy;~~\toz4a]bƂaI9mٲ;$>yY@N:fub< +X85%ɂ]B^^Þ
Z,}~ +p b"OvUVKyv64ڛvV-]jk>W.{]qP#x|eW
n+f_|oQߋE&NAZ.IG4jScj ΚfguY1f:M4FL官EQUuU5DVvB5U1<
<pT'#N3R9JZULqEEQ5-%%9cCcnՃgJ4e(Ls⸙kL6eD7nb(t$B =k}L?_<2JJBΐGxTզJ&yn褅NJ\EzRQxI$Ⱦ!6(=c«C
Np`@jT2L*XuXUb)'CW)8g1uy2M,S1:aB5㚒٦tc5̥qI +4zŘKP`pd<FAdeTT6K9 #j\ì& Z'YasŕꍚȐ}ۢCDc·L8STgҦ.BNgi&1i# +"S^PjOD/5 '_|}'Oҏ?lTUд3G1CuQ;7ۺ6N5d;W?(#PMٝ
&+;!5;;n;\aL7Ї_='^S??⫝*TxB('|*ɶ)b<[p:r}mieqo]#uUPDD)JA͍I2pg薁g>7ftD[uMbːEu ӱ&zqh]TnL1ӲܐI*L +?ƹ{%50ijarh_|comj^m?ܨVd|FFadѼJ0,MS79_8o)6X&2G<=:#z/V +HˎܶЛMW.AAVY"p8)R{ iI꧊2LaCC)]ptPAɏ~>BWAj'yaq/Py6AMKChxE(AC4BS7y )א,XtP2C4BM4Fr85ZmFy(Jˮw9Vcd9:8v#dPIb,QH$HI5EUD"c1clhZw!ϡ*<[!|(@ԝ<p6vWMkLOSIh^m=~uQQ+<i.^G3kwש3ݿ<d /
m8ٛl*<')Ƿ~zW_?y/t᷷O>KGqtD .Us"o"#I㢄R|*6.'
e93,fVDA.tͻL{Jq%=2աΓ<}y#GR9sZDdIrTJ!hA%իQKEc:=eh$`&+:0? +lo;ΡF( +meXr,#1TqZzY77yԞҵ]wkvNaJt|Uu:x]֗7uek_|_! b~4@hseb,c=jk/HVA6: [PW/XWz@ƙX@uZ6Ѱm-o8 +nܻ\&@ +D(ñ: +#<E*,ҢJhC@r'J/}!s({E+?%W($]_p;_AFFdiF1@,m 6ނ +uzz_ڇ1G N +NN鿊{?|ESgS_s7NSu2)g_7+=n<~f%v-A<_O/_^*/oN?חz [Q^ō) t95Ñ+ߗg#r
zOj\y͙Q_(_U8oqa?jnmKm2f*HiPN.,ǁU3*UŪ/&ds7:RYX͆G|aE6J[c#c):]AsdXEWn_-Hn7: QQ_7` ꇋ䛓w&12)ZkFޔi1ŖΆheY}gnLvJ]}1mVm]\vzbgM8eCj٨]|t4v38*(MQ"1烫J: `qxe6gR5M{
MꩅڥEPqL(5ʋ׃`9G&G,FPǯ.㢹19(߈*41B=c0-IL@: +݈x,e I9pFviaцjAē,Y Xk@"ļry/>X!wYS(з
NӾ6Tk +]RQ6^9(eGGpWR0ʱOH?$Jl{(nK.LJZϝ&Y\uvlr~sM!8J6'[MhsyQXM0EF +
)< A`tq3@Y?G9k{l1HӶ/E9Gz̄łս%gĮz80f8G?W7zk1o߽lo?^^MM+vLSmX,)$T*:݂X>~S zasVZ|=< Xq͆o763û lAm Kq͢iԾ#k-VF|jt,,~wTWU:+5uO#p`4"jU<.33HST
KrŰd,[K%5
$)$A8]TQ6V7SelEVXm :|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/LcgkcQN{ôՏtt/'`D"|l`]l;[-]!h{냙/G8qeZ{BWJLJ\ +p[>rNҡb:`##n+FK71{O/6Sq4Ԁ +>! f`?hL7Ԟ-mx($(zcPtD$()}jDoEO^Nxij3&ȺX|@^=<xO%TzY>+
Sh
+OlNPU4+zkζۼ@ +G]]_\xs-LC.>{<Ox>~?#NCo-ds@ -p$8vu`)pxs)XbMF;(:6Zܟ33KFCc%P%qF6"V +vKi6K|]P)Vύi~} l!m9HC +ȘEҡ^/(.[4 +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:ɿuVxc ?}ṫ}+pG;Zq7fyGqDE>!_!{r"*^G>/_=K^-#\>>Uo(oM*SgutVU z |7;,unlZswGB[ Zo_!%k X 09l4 o??Ӿvӫ֔Q[]( +z/Igİ'@dpf݇Ա`x?Eg!MkSf;e7`%(AVV%
-|{ +< bdhէl
-Iu7ӈ5ʁSTjܳU<#X +l +.o\uMaLUuu'df~{nho0SY1}ܖ(?
'ٔYt[ɏ.{gk`6O 94+7EaUC zU[IKg +7673s~ +P$L@ c)`XՠWf'VOnx5'l4МUFbjNNgX`gV1y?|aM) ͎yl]^>m_Yxu=!3B?͇8y[kI1JKFyb`-рxNJ2mWdk +o*V[ڳJ+9tf@=u
g7 +LDR-lxV$i:"f6@eO엣m\k(p61TwY7覬e#;_58bKj^_,AT{ǿr،kA^uOr4 +e4sLx(C-%ك\ +gR
{]66me=&إbĭ)gKY䐐vVk +RVjr?3O oE1ħ\ +=W+ڼ)qGazzl[HSP*3) sD +8.fpw*ڣ/~f@8xSkZǃ[uT6Cב!z5ǭe9岉\v]xd%zi{Mrh<=L&G6rm[&(tɕkC[L-GE<+B
0N,\䀡] +5NߖqV{~ٻ ͵ɨO26IRgtfnWf$ +J
F#4.ߍ\;v8Sjo r˸]y +/fR͖-DA&n{ +TfV3u=̢J2iAQ/1HWZ"(Q`3eoa(Yo
K#.v}t|*Nfb SyiJ9#[>v@rIv
2)i4R e +Z@ xuV
$=/
2R*ϖ3kY%Zh[>EmF@ +Fsp>1EVsb7|f +mgl$'f5GZ][>Y5 35n}qv}#ojyTτ5A+rjd@AWd W
2*CS(_Bg%L`K|eâgo~5˗_?w?\_|^ +~ o +Hq4,M6|3i_C:b<'~4]L߁?4V#*7S践=o_sLȚ+Bn,a=|(}y.'s~iӫuwM a4cí=ecߠ%43,[t3i_0[ +IQ F#<r*K0R +s +ؔ@v{u)~ +D1nR +Э + +*&K jE2#trne _ЫqeT>XNkM%_y|&]YiFBȃ^q,rL2Lϧc\\%ܪ +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 +.(Ï4)N401%}\=
bg"D Fq&= A +?b)ۑAO#rK#%~K!j;AmCqukZք%P}KƄzgnqqy.fR1Zbb2 +04n +y
yqS_TNVWNvN;(< +O\M+o\Hț;-(w;|oA?]tنa{h6+wd/<ͱ>O'A<fPC$a`c8B?D}<;?_XKwF_
bw-:Gg+Q*#C˾|`hl<~/tge Njm[.hgW+ګi[#؊|H6t>А>$Rgm2]\ʐLE(
Q|㞧t5a24ނ!oeU|N[ +g3UM"F5ḬeO$ٛL]gSGڥa^YNkp "smks#Np +0Ł!*h-GV}bQ1:Í0TOر({7H }b%Q+Յc9ڲ]ASmW*
Qz3.H䱘s=b);OI M>[ TJIrCTFuS. a^w,jcg
(h |bXT'ph
@Mkw,f+DNt!N_.ǴHi6Reb<jczc7DchTl??^,92z 1;0b~ތr&v3G,: oO"kVzݵS>~~1gϝF_k7NHI,T+<b1Fܘ3~%"{~C&;.T% +wqqI;} +%d~Uظ=헩\Wkԕ_%|Z[HO곅 QNU6y9oNG4\̙\0)vci>Cq2rWC9!#w6Ω1^(RZ~8ˋi+T'99éDֽ@6
$薲SB.x~iL90;`$?$G +!Gt5Xob_͆(.\@'V@5.pаbu?ִT/lk'FBbhD#x<c#٩09YA)#d-ٚ$zz"qgGK5'>Ե>
X5-1ؒWU%>T|&\g244͐xAK&@:&ܰ"ىcanVgk@ظa )enBop./cIL +p%qV*|U\O\~Ha;>0Q
GlsfYl\r,Oߕٶs;45QjCOh71!KPΘGd\:<TvMQض%]bb
kMdVHt!R6l=6?*h>4d,0Ho,|~2m#&O+sh B(O,t6 +'v`K=7B*^y3d]2+
$K7$Tj +k]_l +H__
_=n[a˒e2v%c%Pc$5y-9}ϣ#˶,}ZK:t4!3joR@:ƣ"n+,`-]`>$7`aD [:!GTiBHA[9(b>C<R<,mKhS-0TrmGAbvrIJ+<Ecz=z`@9frեJ10K
\2\UXs=Cm&q~0 +sJaidb>Vu9(,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žz +Vy!sm
Bj`a^9"۬t5ftXRL3|ժs54k`+cXV&ɪ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/>?>=3</*szߌFqwIU1in5S5$O_W=7rbDSRZvW~dl-ݕXG ,,F39[j~^u
W]늬5<@O_2NÅM +tW~4Ċh_
Hp0{ +_o?ܶe}_}[i~MlROڠ?ܨfYbEGSb̈́1wuyEn=;|cs;m哺@r[ +BPi'c|et9{!5r^Dzi!H_J©xHbdɽ'i4}lse@ +Hd7o<Jj/UhB
ڶeH}ao \BԞ(ඹb\
3.q KlZb*+ޡn0 +-_xSVP +AU+(f,qCC
xͯ6 )M{ӽQqwb=MuHGM:Kt^8^đv8tqw>i0E :tj*[A?G+fEQ2u6 CJz>ßGq)I2,ʇ60R0VPŴ\dH}mj)l4p.pSb6v=r#Hg\|*HN\e 1Pv";}Mx!J6q lv e-%yâX8pF! aIc1 +l +Ң`;D(Mqz +v9oj@qriAe; Nz +7[ƐݠnhPLpLA8R" P_/Fkh~#:z='aRpѪhdՅէMC,vjST-lsqbٟg'$ <,]u2`3Tis/?tke6qQl.4%B
&I[F|Z{GLe7veD;8^qj>ͭ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ڥ-<NVEO2$e3җӖCgΛkrPE[$E;"=-&QL-Ƕ$=r:XZdIjܬ^'QkP{qN9=$XpYepI<ĈbMZ&.Òӄk=GL說>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<m-uVbymk#:n +|nga}B,#Hѡ:崵/.cK/4:$-TZ0洣ڄ +m0(< 3Նfl?a岒\䩬to
i6cv%LVX 5 %$Bpc66J`Ju*7ӥnv!|`A}]het[UM5`*-.|0ըC8ȮU$%)c=̼ɉ*Һc^K $*mPmrM6iȾាr~ׁ*lì狪#zTԶLީV\*C8m!AB~ǸL +1Awp$79LqQpГ
xm_Bj@UUR\-x}BϜ66[u>"M4ⶒvx8ZLBC8 4-qp
Ts&_7
LdIMevfgj0BGگ"*%O܂1Bp˂PkN|XuQ ;? +V0 RY0̈́`
gYU'ȑ!۵{z*2B']GlP +P{vO) +j(y1h_&mP,ahIstƷn|;PU{ m(43 +MXa*Y!]PXRjAn2/r[Z8.!UFNv[~0Vw3(6/.'ÆLxt<)<_Z25"`K3@1HtTCՎ: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{<Ue#z
gL(C%6ŭ$(i*RВsB@WʸåoPr0X +`^*pSB.RFEU7;(qIR-ÑcÞ"TI3JT&l^TqKU/1wd8fԐWG+,|6@Q%װ3h. +{%pcMɄ=d4Q 7C.̅_WG{4U`U3PJBA[KK<;8 uz)&[uZ)i$@Xʧ7ZIY38gO@1
R 'lQZY0AR YE(.jᩘ'$W>06@Bt%i7yԜib,6(kΠ3~F4]dx<l*!и~&:#t`jpX\R`$]wh.
KbR]x/s:>x^`p:@}qؒe]@b8A#EB4=^jcF֤yd}}B}IAX<Z5n-[fk|j4w͛XTϝVI=@n4kR=&] +{vfb8eCb?LUnwFRLm6Ñ3Z fDVXU$_^Ü痏N`jd؎aU.E]G@Rz +c,WZėxh>+Xfb%QX,)mƆzevvFQuDZ5
ʩ+Y 8liI=WЀȩ`K+sY@V(^zf'LIj(&lcT>\&焳z6l.plՊilVQv'eaqgpOV4M9Ny08;(UV*;8l\Xz#i'{yH{lKvȣVJJr@}ݛF)2k`:F.ڛQCd`1He! .66 X#h'6hGl;\0ׅKTĜnffd'cPgmjв,0J*70<C X*}ucRA)v,Pd2PNdVvik4 ͕;@M+Dċ'do@-K⍽c:kf]IY>f2?"&@'ҹ4~@X]ZcCv7,S +MB"o pZ6gF.W@M,^bGQ7'8ӢҹJluD[&ɨ&z +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<W{uo3x_oOx!1?mᗧᣛߍ_\/.WN/n>;]]|lzB>Bx +B\=_0<#N:ݾ' +EksԒ{:_i{Zಌu7oEJ~Rٯkzon7m%OwM^$
N9A*Qo3xL}clztr{Z[$tmKgDK + + +y#.P}7 M;}
vzJqHrrS6Ҳ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<Xb{dd߁a4~"kC]g\oö[Öz2hL175
s(K9bQu-+5|R=q-*L"RRYmd_yvm(2D-3j͍H/ Q%iMbѼdv]ZG˟dzG(%c-$RDo"FR)a я +MAWFinUʎqyҐݤHJF$*͎Vy2LWP8K~hPObu +i g/|jX KW4scvɁtFFP`[^zKߣG)fTd-aCm 鶄@.Pk!,R}
gCGߟ2AN"]k:EQ +e; +nwK/\Hu3Ǘծ<`4,ېVߣG)fg2a<@-!3SUC +HasڸA_v&;@S(&3M)Օ%_YJv +Bdzg©:`"*]oҮ/UU'X| Z4$x,cx<]]P (Q@ųGu5/W +%[oAx@4OR3y@\Xo'Ħ)'r$lir/sQu[]VxL`'8UVB$ASC얓@|Zr0ahS/"096y~[2!pC'l:_-Wft4\7|xJ(\҆}Ω4hpPn롺BDPkS}EվnN'B4TV+#gqlZ:1u>| +6v@ᤒ +%[oM8eI1cԹB.yս7&Zn3::JV̈́a0]P^ck"kS}<lO%}W-.^C79Z :tc&t|C_}T2Sz(!ݥx,8%{ܡ)xX
C!jٕ*NT/t^S TYDWF%vwJ&
U'0϶7* +/WSЦ W&IdTbfquHWP.ApU%927;qs'^崻0ݝw'2E{o]qcZ _{[PiU_\;{&UL_GJrav,jfM#uy+z5U ;1;ã2{[ iʉ ė܄3!47@:`"*(:fRa)3?<*Xf_=sI%"5*Ra?ܷx\m + +Qio4{d&qFj= +1eV@=N\Xh}Y$z]}TP\V.V*NT}ð:`"8}zkR$*aUxտ\ޣM
1<@u"#0*4ݬ?X`FJ4R=3<NO.JwR7VRkS *yhIT`/{wkY\s,+jM+q859~cy(EtHOGIbzs +ոpY8pm{jRQ<#9*6_}ȇ'&6M|?7
P1R^5MMSNH&ߡv +υ<SrFkFEgJ:U +uWt~4CqU|Ǎ&{iV8
-nδ- 9aW^!U=ƞ.;(@6BRz-#S('-˻HB^Ɨk4KDBCׄTy Gj<4$KEgW}{A*CA8Aտ4uNG,iĦeG1*\G7[&/R +jE='D"j$:FƵtK"٬ȵ#.cʮL 25@\
d؝G݉< +HWmSH*ZyK Ruu +]͒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+̝ʤ +$!ЀR.%btQȤVe(\S~_3 +A +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 +<Kc/;)G"PMN<'Z:ǬOձ8Y+?})Y([O>J3y{Y>p&Ǩwo +^YJ눆20
ղVZ @kb6P.5(bP +ܭ*!i\ +S(wIxʱE"~ }iʃ:0ȏT\qƋ|(PP QO7 +3eO]fi1?;'ߓx&ԭ+C̥1YJc)t߁Daj2JS^S}z*8鮧7)f7)c{ߤ)g!(U %[j +m]gPj +
Ebf_H^"rgf[.\FGպ ]4!?ϫ^wuyi]"EHd"+B[F6 +Dx=lQ +0~PtaRxf_:t
}Б
N+/9x"J0}.x8ģ4Kl<۾w+&9W\V~K˵mp$Zz/=Ge˙L\m-I7_!ܢĨ
!Z +Eɣ}-^_j~>Kazu0p56NN^I
"To?-_ZMǗOF/zat~qNoqXO7wC9h>l}X8:ЧjdMqYWj%CH8xt`gR|,bp]
eM~0TWic, +07l(ȡe!Dl 2PRpoP=~A'JtYb= +萐H3y"D{+h"#!(Z'uV>Ml{har=%(2u +k1 EJ"&6bi\훦S'+Ie +У<1$̧&~6Ӊ-~'>٩wKP 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 'e +@]TLIL1rSwVekKv,,f_Z+ޚl,BQV)R`jF~>9y߂J)2PiVR7'Q +h쩇NQ)ڻ<`y/PJaV + ;F6PH1=B~2h:F[ƚdJn(}5q%XP +q긫J\ +%]kתu}^JT3Hc*63yLiZцJbkj]W4;M~o3u}!`P'iʶL@ ]M3%cZ/q̩|æF5!ngyQ +>sfb+">>Yrt4Ȅ6*kA1/4u@#\QQB6rQB3c!lީ(odƪpiT!BV2tUTK$k^hlK`ñM +"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=#ĔW +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? +Bj
+>gL}ɷ&vّ:{N-dZKvٜd3O[jV_udKZ:ZU5dRy֙ 6$VEQyl*|2{qΞ8u_mv51x+yF|f$FFo7I +%(I&G +s]<84aP&qSiR.zUфdtGg7ErjYs?$aD>Z2BE*+/l~}qYvK?hB//óKٓ?~swxy?]{;.#kϮ7o'x_w~L\rqCT?[zX$O~Ŝ?>vq=ys}9y^ +wNڙNr_z|B}EEZkƝ:g-c_X %čI.WT$\c|LM[{7I+ݓZJ{0W]pފgZXJlI
X?fȊk'jIBjU3]''dv +Tښ#EnZ3Oߜ͑?@VZ&SMKbc7w՛OI^mRJ!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Ӟ<Sσ>
%hjl$5?@æN^Iݸ +>ޠE"mxnw)GÇWX/oΩ>O|fv"OW?b>qIڹs_ۇ~_ŋ4zl]iG/z7c뿕b9.^7E!F9Ty`6yhKsF4K +2vP%뼎o8\z$]ʱ*U
էl3Y?S=~mc)EK*[Ut;[DR1K)j-+zyZofzl)oP^78@eEF9[|vj-8U92^^ў%(J5%D? +MDgbVEs9Tj4nWY1sJ.Esi,ky5떚^:ҟe!hE*^
+o~ش0Zi mIh\<?oJ&IA!0a9`)CzkD1Cu*2eɱi,MPvlJkmΛF6Zo2u1e#uΔ_$i40 њ|KZrDe&WoцiH8]
f +ugKSk^.7uluq-ovm3^iHGCkPOn(x+&`h7bP-R>F`%4T&6}btj(#GپuhjPDlGGKp3Kf
XRφ+gQKnS1ZvW,UwV;' +M +ڐKO}%ͱX0Ea|x:XYYُI
ig^(dN27[0
ߐsDIAq;ܗFw;|[CUðC~zHiܴFH_)CdQ3ĥi蟑ϚK49҉Dlh)J;YՍnM BpmUۈK/e$[UwafkZG"v/c8 M\02b!T8_aR"({gÓ&mѩI1ͨۡ&5gxG;$$CVzb<5y)$_`\6&(mބ d݁dQV&x"}گL46B 'u:ѣ& 8hۛw)5u(f6K4yф /_Χ"!6Qk9GQiLlQ- kKC߷>VtrL'v5#-$!J=bݓzxȃ*=\8CCc^bN\&EO3ԡA^'pl LYp0MUSޛ!^tû#*IR3:]`Q4'(+Ŕ\~z6Y88T_;DqN>zwl;M,(R (ּk#]n2Tޠ*rqp: fZ +x=)2^Z~ŎNϵl0eR~Ě:uB
+^mm-i|akN`=Om<F3Ȃڝ +d=5t>0KAd86cIc6I9DPΑgy5.rsBFdԇ숪LGOgM$tφ# *4"+j}.ʥx-y,zA%>Y8=O"K*81DB*0$df8jsZU@6Rtv
O%;56PD#%dNRnՐ $o`9.gh3D-3mct +$N,JhÌFjqE告8uy2ߚRk +0tk $}@´un=P r
3!Q9)~3 +PĄ;8%齍bRɧ@ +?ٻ/]V"7glQϒ֫zTC3<{}ܳR2_L֯}.&b҂E5TծA0й;?ADiWƋ(=s?hwƘa\h(Alo<̎k2$7`nK,yS9myB/U[E` _'ظP`E3ǰB(H; OͨIQ3p ď
|Vٌ&J FcMN䮺v2|M*ĝMjnMH8ժ9ϻ/yLJ&O\RsHN8AʄZHb?$G#';J}M@\J +Y-H4 *2o`2(}I(]R">(eYpcB(Y8gZov}q;e:COxg5rJv<pVr3{kn:؛( &:po+mFRfR;U̯Bys. @&L47Y[>R@9qLs
+ؚ/;1?UN[vBV$/Zъo^c7)Oc~<3vqrN_ֆf +yD&}ITAؿE$5՛7<ݪV7`w̒V-ggНlRl|3' +/s+ +4ɐ¾X +z4%gyT_t#=lCCFJhsƯs*uvY[ ҆`yX7W9=~eX!n +%<U$z4m4L.FR O)悌f?AE4u!;<C]ӧ|(
vo9ԸbKTRFl8xĨF\6Gn99ΉJmk=qR~g(dbE[ + +蜐V['<KG76nd(kԪ))q¤F0R,)Ƚ*TWlRy<[b4>x?iB>|(lTd
GG'~2 +ܻ͐m[ i7EBS^LKw
&DMӅ8rw-ζ +ԍA;D#lp1la5w9PF0w +g"zDeؓkԮw[w#TZۏ-xUGVsZнiƮMS0u`cqʲ+lRYzj]磼0r\k`zY۶1 +Jr^-u5Mَˇ+s!Gpp(;ϥ_ExFVYȌp5m/ÊNg+CosܳFg/쫢*3:\NI,=crC~Uh;=Miu q
$vk +(FÝ8ǕVYK8*(f,eBxR%hA_?,*}Y>"҅A^@٭%F_>-qzGt甎dcm1j3+@rpf +rQoxYom;ʼQCFD?D!㾑סр)Z09__~=s!gΙ]%՚m՚. +ipCw?ҧ\KѬ{{0 +Hş`ޡ/'IN !&LB9F. $zd68v.J2b>Ӌi\rn둋u~͒ޟ<fVTꨩckb5(:1K/5\^zUϩY0c<һn <qmy>khaC1ry]ocTKrgS\z}?^٦fu1y1<xj壯% '?g.ozLwƊһM~ߤ;\՛'Z{7&#//N=ξC=JO
|;<lWo(<h5V!q2KzpjkJLM˵QmƬ%]N\m-2H%tI##!,ޯ!%\;G-ԛlՎ#0"CI.EfsVkZ]pkD|#DlZG[)y8(m$i_r#ChǨB"ljB3鮩H䣱:J>rgS/tNĢֆV.Ys֘ j{ɻ7Wa +0u/2VYtL+۰Ň0 +VDR +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;QC +$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Κ%Dpw41'["fȀ?)wHhbjwZ&:"dRV UEtDjBJ BUp;5#7*!1h7_~xRMEAH4+`ISϚn|[-ᓪJ[IJQ)lDEPis6&6fiҍSo+
=tnz7>ӣ'/m6}r/߿w{|oZϞ__zm_{<g3IQ>WĘv4rߣG>w?#:ӘWB^P.Au9H#}0xiH؆0K1d/+k\s'aK%$K(&l52!,ٚ%KMuJe;|=q$dM.̈́j(`Ƕd,KJ +h`qA1Dt]cČ{nIJXoc郙j!"ƌB#Y1(3 +]Yi1iUS҈HR{\9?1$ +XDrߚ0]\u}Jxu<DɕE-hҁ!Fj-ٯ{_dI@oJsRD9eNT[z,Vr mJ#Xz0%xv變4ⵙǽOF*8\l<t$'ј<ݔtVOjeo7Wpw}%9Eq kWjւ7<\'#[l72cy<1sB?@2d4ah$}ZcI8}~dMVՔð:d٧0ERyQ^OODԨtQYs;MțYӊDK#֣\dskb1q}tҖ8PfԜЄ#[k,ʝQ?)va@"7?j=]IҞ an.ߊVlՈ;,mL)XVL +hB$Ҳߙ^&ԷJ4mSשۣ\#@%t:TՙL:yr(w.0Q;5|$#BΏbV[KxT|^E
m{;¯rl?_`k
].4ڪF&<3jϥDZ{#Zq;S,)ct͌Ȼ?.x` @xzEp @ +}S`W'uM%<>z2SRl:GKLf,߈TF";O`{hl<lqJR3wٍCk|HHW \miQIRHkg@X^n飴+Od/xnpkjTGiei+Pm +e҉-Zd%@["Іc:6!ٶPnxXJ=[>Q;HCpQ~y?u[k*8p~:[ڲ +QPaE-xxۋF]%KڗSגIzƐUɭħOGvЬS,NmG S1
nB"(1h`=@Ӭ{DTDjqw|o"B@~"" HqJU3n (PDzZA`('B$2XvQaupщgQMmˊ&ʿiB04VXm2`36\O/osT@9b5
ԝ+{>S +>Ui*e$;pXʃ+,D6tT#, +?8T_ݶRBx={Zrw-|uu萣W;f5DF&n{B"{U
Ԝ%m>ߎ,): + ?i6h4W s}A3%c%| +^Fm#a=p>oj*ξ+<U<AZxW&fQKu5AZ)-y'+YiWV ߦVIy!%̬K+D_%_Yz3b~wއnwόR1"ɏ +QdnJ\b0Шj'm^dhQYB~SPPRs¥XW)|vB+>NGZSqhooyFӵ!i_s&c\ٶKbBO +(sCCW7 ^z$4[Tcu}HQKZ +`/*8d/jB9ϛDLyP`T$ fjc#\*Xn#_WT <;+5\5
IfQ-ٓJrکtV`d{zHZmA r"(}Ha<P#i +ΡдblitX3߷u1]E?,ٳ72SJSRGwʄVbP!m+q)gI[{uKZ3n؈YNTR icq "_F ʀ꤈* +a|FbW4.sn3#$XmUay +̒_4DJ2<jw>u?9!m&t[ȼjGnvIuT4<H +yMjt*^/[Pȿ,N
u\d<a^w1CWFTOFMu3]HNzslTv7E
VWn)
p-gwP<ד& =B +/HXRPY\%cpu(h "e[-NSM+* y\`z}QYO|"@ۙtKW&]K)jWմGђeR?,Ӹ-rBYQն T8c>kRozTPT+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 +OrKEvdN}Z$Z䞞*?:Z:z:iz]0$Z;"hc#Ž)dcߟ0xwHlA!iQ0ORq_$C!v + 9wnVd_ZݖLB7s5Qtg=rIi +Ҫ'-4mj#O[5zuh[sQ<. !q5׃HYB`uO2Bzmi 6z`*21z +l|Vwxljnx*4rHPPHFff"]L&rMgV.R .Ds\gLL)c!mrGg)ŌNS_.Ae^ooa"ichQa 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:<t/Od!L| +M:
+縸Hqe[CHK4Ͽe:̈́6zu&wެd~LÏ j2&3LPu%WEBR+cJY
O4Ԋ&)WE{>x<5(2x1e":2!!Bdho& z +63Gۉr_<J,hB]74}s+ +Q'h +:$BMxMr7.&[1T4ei%DMйv)8e;/[3.FkKZ;R*l{M"@4n@ @͎}2|e"u|TZի8|aMzd"!a"W*Wʘl.94{tjJT ژVU
A:OjaS[薥hI%7 Bl>s#&cT|6¹`J +a"Mn9{dCbf*D{O<uE\0Q@#kf!]c@,k D9cxpu:+5Jx:PK
ڧ xSc<u#/@4h9<Vc(:r,̸$64lDq ''q˔T$g;U +G27X8 +@wii,~tcbBʐO` +Vd'7' _N*LM
^]L&GrIyJrOw˝8<~i..&BJ${JbW4}ڣZ%:,gY42qwpbx`
DLQߋ,z,qjOKb:7}rcb("yʁ5!j"&=j +gQGCe@4>*ZwOT$_wwة,&rh,x&T/{sP?̳JOYF[p,t;jr2ma21P=8 +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 +Vj5C +toW
Q]n~^0f`!AMu;i/`IipF.nJ"06P,;ޛ8G =qVԀ~gG/=| 0:5iUO7uyZCņzΣ_(<r|>gh)s_[T M2caHqD˴Nˑ'$ON3&3$`=a"}f(`J5 z>aROeY2a6KAm%_yF:!I/n7It&,و隉Tr~Kt/(;:r|^nx<o\7FTbRbB]e565 eMS|KҲ#aTF;3{D@ .Fl`M"E*;]){.qOܗ-E$X{fw#(>f$/p[>B6%hsUOB%t% {)`e'-}ne<gT$ޏ^=qbNJޛp% eBlD}NK#4y<rOA֭)9V+=Ki/0RĘu]BS~-Z$OI[QoN]chJ|ڞgșƓi3ww_<h%׃FBR3;4|=UƦ +>10Uף?OВ
GL +$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:ry +(`b3j\di{ޝ#Qq~u[8ުyd%]lQ+Df@eBs.rDp\[BOuV|/wlwi,C&+~)P<|rR,%r'.ytnSڷ
%zn>{%yDG9Fh%r=8=!y!
s7s{G)k9G5C:usb1ЖPog*Xƺ8xE>B|n-N`]W躈أh}%G0uU>#jNHYD' +K5O:ݦ$H*EJéE̓1o>VUp{ϑ_WVǙMm\D?NT;/@[ώSpLͪߦ9cMּqo<<<* ?%Dcӻ뿰]&C~gm]&7H"ǽoJD=$qNչ$e,iX]P( +oA縏561{xt#Qg[j*sHj)"B£9Ud@"Xaut^,IbRKFޙY#Rj~麠`dsxjFhK|BިgX)`8y4o0Q5i4:`3|s6"> +
|`|E'L`Bf ȰFУ'j:JxNd%ϥy:ѳ%EnL{y<BV&zESYy\*
nk(+{d}?&+mXQ s7Z9-u'g`%_M]e-A>ŚSq'g:>\[K#T":6̯6=' +tFYԔS):caN: V,[ctūe!8=<*/XBfe±1TNb&ѭ+@-AEE V<MaΪu5=7%dA<Z::kxF<sKDvA⻭gUDDy܃H[R2h{D5\Fjm@_Eϛd(ہ
8I(Y:ʔ!HK9,6@Xs4;w$cAګR$
CWˆ`;0PFGb>! )ZVmtN'j[m1c +:Nﶫ&;bp{9$+&_aȜ")xbR2)v!Nm +6xC/z>̳>vI_#sbi}ŰD:0d@i-qRP6D H؎n3,*
˝BX +ĝ7B"WfO.ۻC?vQzv9z><u)W~Kl5uaYBI5TQ*e +?W|vŚ-բ~M\4&2;oo7kY˛9~&l/'#M? +W9}A?fʖ\tJ QhZi%z(R![3J0~JmxX۸guhO<Icoev/W5;7'rq ^?̠Y?א40e@O# +ǿbU-Nl~Ӊ7aBG+fʪ +VA~h]|NX!<HN4YN +,-+8RBM[>CX>Eѣك+y#\
o~G1%% +:ȏ +}T6r*)Tn*rlOO$t_VXPdJ֘o6C0!x/bP cgU,0g9MW,,fCwZ\(*!iJBzhIXYA+F'spt-BN +aäGii;)$^WBJhE`crjM\^lSdc}|њ@fqJ]ąk
%fP2$TRa9u2H҇$?X$nFf:f~q}_̉X4$<u#P9k$@|B;p?aTA%(aTj`8+Hd8uZ/Qk:?"D#x.(ԔiVeu"P҈A* DL))6\oxS%7"ڈ'(}:_}aytp0,AZzFs$`x:͕OҏdX, +18/w +]Jb}!<x{~dއL|&"۞q--baYoyiw&¦Bt3ߑ8C#;Nuf#CoKi*)mr>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'Flx3ahkvL+96eGJ"f(ti,)0c4gu^i/IaA-H +-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+UvZ5uac9;T5;oo7kY9Y?n?gռiSM)&/@CQJOAGQC@ИBVcc@MRi{
!G&"dhcoF" +>C*%mtdMaj1h7U}(X[1%Xh +2 qُ4V}e$4h==^
rAq9lBPz\ .mQ)vQҞhرz',Q
b9*
8$[8i1[boJʴtwւ'l3.Z4BQ4X5=qm`
f@y"&Cx׆tT_e#G>;ZO[' +*n\h`/vHw-8M&>߄
s:('@xtlio19
wN`ɑ,.#p$f +wr&B.JaEw"Dkl0"K& =!o d*@#Zԁ0P}7bqknxK9'hبqۯq3b81 +%Qo"YHd(]ltX "8$H: +o \,3H(Q<R= +R<&1b;1P41h;M2"Tx<rM^UҮNvڤ~օjђեu47PM68@X(&N̶<^Y"xLO3dy
':ko&'=72p@.͗'$q0c{U+b!K<5B,l +'^\]D\QD3p,-M8M\.&aBvW̎vT9# +ȡW&ۊ"x?g5qF8
4}YX^㴙0kAx#Юz$<0@--#9xnlUOwz +kܼb9[86XHqMFIw䂑ЌHX=0qKwpi0r#ef*ިeonʻ>rHoV{th ?ӳ_;Еc=)~LiSbXܛ)։RkG +Qp,9(Nj#
P0+Tyrkg8&/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#&R;JL[ǹy҃ۚ +bxiFh72RQ
a+ 1͑ +$\7-'*mpQe5(ArnZZT&)aAw<z>@(ԳRH
<d@iB0qGDLa%FIQf0f{3!<A;6JIڶm
j/%
Ǥ!
@bi.6l;O[&8.C3ۋa#C] +& +8% +P#rº"CO[H!Pb4sS78.)\iɝ'#Ƒ'Tm6L8Pfzr +یLa_\3Wi3=m6[~8btEGz3JҜM.b̗OufY=M_d:kcu8ûYZ^rҋSx~<Ln>$;ggG̭,Nۙ8fmil\_cK>E0Y` z%]I
cG75;&a4;{Pw6uu\߬K[G8%Y> +`l}vw{Əew|ǭY?V݁cyʴ]1:SI轶=[<h.Lͱ^tyLhpQ77WRrBTUPՔ؆FV @`Ljd!1Xl +tƚQ"l^#-T$d^ +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 +ȻS:oe,><\D/EHE϶HԆh=z?T5݁xm忲d0n.JfLg4&'Eܻ;YzPl?nN(B(HXپKoȶxWqda+{ccgld@T|?sd:}R@h9?$NOy+mi
S`H=ԗ9?3Cs͟]ʗp"8&Un
^䑊D=" +HWmOҶ;Om-HWW4:U.̿y)Bn:>9s#+ӰпaDF00?c rt~F)ϡ'\顧O-B0R'd-JO7#{o +'9x)GOLPX*9ɋsFM^I| NE6z %Ak`5Tk5L:̫I=y߽yikSW:j2X,AեbniUy:˾ϧuNV_ !/Û+3tLu)z,8еE`x&C?ACyOEdfú.(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"/cmmL-Gc@-,0
)'!&PD{x(tvK
]!˭Zր,駱ӜQ80D>d7IKv9a$/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±
Wmb +]zjRCmWHskV5$;f4iN@R2*
ux=:fv>*֭ m[Osc6n$$+$dŘU D>6_3$ZüvE'aC3S`fB%M^{V~>rU5a.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%3aNZ?[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{ZVa3Gw*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&
z01u@qB'r<yU~ٔ1J2aA5آ++ g\&$;qVt8>Us^^Fk-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=NUR^KѪZ):~E|AEAXo*O-=Q7<J=7rd]cA6 +pa4|o2ߛgo2˚!>}˹K
56=/w~&#M-'kf-A&eA-9!qL01 +1,`bGpPk.13$'G(;@A0
J1a +S{D\Ax +aD\ +\vD~p&JG
OtjWF=jCN5=~:`o"}27 uC~O>Z snVh}0uhHժV@Un>ۦU˦fYLJ}j\Zf@9Lb;c4)}8Z*@z-o~~?vbL#yj4XmMSMro!
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>P8hMl¼,BV!rCjKgbF]AqTlRT6plՔ̔*8C^#;G%HuWV]ǡ+/A +iMSޮ.L1[e^&m0ChgNPnDnZ 0\Kk7vi'3+O>1)sr9\ȣ<NJqQtK+"tqsaM +za J*9{9ϷO7DG59b +Gb+,˅UAt +cLq*`ҮDD!W>TnJYMr6jq۫RAH&rEO<Hq#Lwaߘ+(_UC_[dN2Uو$#JT(=eJBo +B/X$# G4]aC ::|"e"wF;bPcL
OQ9JS:gxd-e%&ڿ&B
֍@8=He9oK_)1]FOVTQc&_XQ٩f,?řy1CwT ^´0<={#ߢw^sdH"!~S*ajfhGovk GK7]DYߥ!"D,k@>6'~+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} +D*fe}۟FÐGS ;ٰ76H1JIjKof
uabєq`'G0۬NTʳ/ H:|">ϏǏFѲ`vfnI[sI)YwD }K72lNJo6\gzz-q~][)N#\F-a + xM60^e2K qqD@Tgy4Ź9~ +D%|VZH~ovyEhy8jkLu-%M|pdN*|DҠbG5&.y>Z(֣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%C0vh{2\L]jzy5֫fTy_O(ngK;- s("Y>U>RWd +<EGeQ_ +$hQ(tp@SN
`+66wpI1%LQKݞ|d6>t@+!s.O{;<ꦦ]6*f;Zt5,bՓƣz#flUY?gxa4U.bt;|mzWҩWn#.7V|k[2ikT/jo+r,5O]Z"e)2_蔌":qau϶:q`[n >pB<3am߰0XF}:\&8l4EOBR& +;~
+-ut+!*b^4mz,=%Z,Awsp +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 +]:](k,zKLg-Rп<B>CϥsJoԯ]֣ +8߂jqzQ0)y<(Ngd]q8<%?? +E|%,2>x]6018>Kπ +F"jYQ]*}i=b1|TabR>($ۿL/21|psH;(TwkxoAN +6Pjg5[SVQqی=A@U BD;x\@0ʋ[(ەtwWг/" "y11~x}Afa,YTZHDUXr.z}P5iO0Q8ފ$2{ +!Um2lMY0M48%m +H~:ǯ{ +@**?+O▽(<^,.pb$ף CsbBQ֜zb4TqITp*ܗ($!Ufـex^VM,Ut-FΟ7' Pĝ/6UU<]ĉ/b
*Jٝk5!ƻY5(ٲ;̫eEr+/AQy].I[4tMnKޘο +c~OϠ<f$AX*hn")"uiL['8ۀ +ޢmh^oC
VU؈O"gc_s
]6ğef˱mUOnq?@D+3<#lxYa0J4UP +IXga~'I +k-2gfpWTFhleU|/#e fo.
+f*Np@B|?a2ŽX/͐Gjޥdžcg9.ܬ??HqoǃaF1{4sڅp93?4$;Ώ=>WB)}{Bijb3Jn
+X!˅״RH5r8}Tل'/7_))蔨}k'P^ +Ei'ؓrVHIcKFdJ~P"Fn9_.-qm^c(w +ט)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( +Ɔ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?vdOӽ +ӿbn}{*u K2e$XiCi*O.dys(5Yep䅸#ssmOrhu+]b'M=Mz h~ۼ=] +[.l%lTtP<ܬAY mcL:ݓh,O/<ᕤ>ZyvibPJsZj3|ץ"@o^(kCzWmR0VPe1l,?bIЈMVh"Q÷>2wt^OGtBV(Fm4e[>~VF˸-Dt9.~zh.茣 <:G+˲#x +1p 6KĞT|X@)[S`2DEs^]RYaCcܙy/7S< +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^<stٜx݃ +t4;B +APLݣjޑ@G/J},GU?6ל' +rMQNSvq(B}=ؠW|4I[#"Ta |1IU`Jr+bvRԉ:ln&+t\0P>wc(O֪W{iP' ?ꈕdc6T턘%Π8G;*MƏfQ
_Z!0_p! +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_f4G*#L2|LvqK|$^
r%Z%yZ}K:h+kIئ[b,MƊ_NAi@La2݉v2Ae'rOSG7 +-%T58rE*i.If01+F\n@kzD.& ILd4K4%9QjzBJyŊ.t%e^+ +.@E1!3AQC1ld3İ&£E_`{{xwU +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"3Od ++"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@;7<G0K/9U8uNwNlVh*L9L#X>5pz0Pv(쾢lhJFeD[#*;$۔c$լ&i#m?pQL8ߊVe᷋[;V)}D$'Af&˄g46& v+1IlXpKuc$ rG}E;yW4PWHiR4.[r^s\]{oS۪Y.H1`xς!PT xxZ=xqP +u#/"ķ;J(zM$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 {)ߥ;4ypbk<S#l '[g< I_t~2Pț
Sw3~zvqg~3TDy z
!NU!6*?ߑ 0!ԐSjY'mv4-5W^}|x,bͻǐTooO2a4磿캛0/AsKHR> +rJYZbO!)1ٜu /EI$~?2iyioGQ_+R?Trk_rًpf?7';ϊDr kffT~~,BWL=x?n +N𱟝9#wx.qoOvf2UA}1d[8 ~]R4)5*݊xݑPyAV. ++T˧(NNJ1R7>7_݁w;٪*I.zuB`t?ð.P+jK92Wz</B"PE Vu). +FB +MG +;Hb!(b#,əu[
1XlͦR{PxR{ҺP9*# EbqT
M.H] wõf-ݾ<Kd3-> +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> +db$>[5?w+Oy[bd<Π l+֬Uۛ?Tĥ<T)3,D9sIV@7%XwqY_[`ٹKv;W5w=ϫ[Z12Mk7c( Tul +<S.mV' +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
<</Size 25/Root 1 0 R/Info 24 0 R/ID[<FC794AA98B87424CB2E97C518380ED21><AE105AD1585C4AF798F36273F70973BE>]>>
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♪ b/vu-cs-standard-thesis/Latex/Classes/Icon♪ new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/vu-cs-standard-thesis/Latex/Classes/Icon♪ 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 <http://purl.org/nxg/dist/urlbst> +%%% 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:<a href=" quote$ * url * quote$ * "> }{" * 'openinlinelink := + "\special {html:</a>}" '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:<a href=" quote$ * + swap$ * quote$ * "> }" * swap$ * + "\special {html:</a>}" * +} +% 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 <http://purl.org/nxg/dist/urlbst> +%%% 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:<a href=" quote$ * url * quote$ * "> }{" * 'openinlinelink := + "\special {html:</a>}" '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:<a href=" quote$ * + swap$ * quote$ * "> }" * swap$ * + "\special {html:</a>}" * +} +% 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:<a href=" quote$ * url * quote$ * "> }{" * 'openinlinelink := + "\special {html:</a>}" '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:<a href=" quote$ * + swap$ * quote$ * "> }" * swap$ * + "\special {html:</a>}" * +} +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 <<EOD; +urlbst version $version + Usage: $Usage + --eprint: include support for `eprint' fields + --doi: include support for `doi' field + --nohyperlinks do not include active links anywhere + --inlinelinks add hyperlinks to entry titles + --hypertex: include HyperTeX-style hyperlink support + --hyperref: include {hyperref}-style hyperlink support + (generally better) + --help: print this help + Input and output files may be given as `-' (default) to indicate stdin/out +EOD + exit(0); + } elsif ($ARGV[0] =~ /^-/) { + die "Unrecognised option $ARGV[0]: Usage: $Usage\n"; + } elsif ($infile eq '-') { + $infile = $ARGV[0]; + } elsif ($outfile eq '-') { + $outfile = $ARGV[0]; + } else { + die "Usage: $Usage\n"; + } + shift(@ARGV); +} + +if ($inlinelinks && $makehref == 0) { + print <<'EOD'; +Warning: --inlinelinks and --nohyperlinks were both specified (possibly + implicitly). That combination makes no sense, so I'll ignore + --nohyperlinks and use --hyperref instead +EOD + $makehref = 2; +} + +$exitstatus = 0; # success status + +open (IN, "<$infile") || die "Can't open $infile to read"; +open (OUT, ">$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 '-' ? '<stdin>' : $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 (<IN>) { + /^ *%/ && 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 .= <IN>; + } + $bracematchtotal = 0; # reset + bracematcher($line); + $line =~ /\{\s*(\w*)/; + $found{'entry'.$1} = 1; + print OUT $line; + $line = <IN>; + until (bracematcher($line) == 0) { + # XXX deal with multiple entries on one line + ($line =~ /^\s*(\w*)/) && ($found{'entry'.$1} = 1); + print OUT $line; + $line = <IN>; + } + 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 (<IN>) { + 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 <<EOD; +STRINGS { urlintro eprinturl eprintprefix doiprefix doiurl openinlinelink closeinlinelink } $mymarker... +INTEGERS { hrefform inlinelinks makeinlinelink addeprints adddoiresolver } +% Following constants may be adjusted by hand, if desired +FUNCTION {init.urlbst.variables} +{ + "$availablestring" 'urlintro := % prefix before URL + "$eprinturl" 'eprinturl := % prefix to make URL from eprint ref + "$eprintprefix" 'eprintprefix := % text prefix printed before eprint ref + "$doiurl" 'doiurl := % prefix to make URL from DOI + "$doiprefix" 'doiprefix := % text prefix printed before DOI ref + #$addeprints 'addeprints := % 0=no eprints; 1=include eprints + #$adddoiresolver 'adddoiresolver := % 0=no DOI resolver; 1=include it + #$makehref 'hrefform := % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs + #$inlinelinks '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 +} +$mymarkerend +EOD + $line = $_; + until ($line =~ /\{.*\}.*\{/s) { + $line .= <IN>; + } + $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:<a href=" quote$ * url * quote$ * "> }{" * 'openinlinelink := + "\special {html:</a>}" '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:<a href=" quote$ * + swap$ * quote$ * "> }" * swap$ * + "\special {html:</a>}" * +} +% 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 = <IN>) && ($line !~ /{/)) { + print OUT $line; + } + while (defined ($line) && bracematcher($line) > 0) { + print OUT $line; + $line = <IN>; + } + print OUT "$line\n"; # print out terminating \} (assumed + # alone on the line) +} diff --git a/vu-cs-standard-thesis/Latex/Icon♪ b/vu-cs-standard-thesis/Latex/Icon♪ new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/vu-cs-standard-thesis/Latex/Icon♪ diff --git a/vu-cs-standard-thesis/Latex/Macros/Icon♪ b/vu-cs-standard-thesis/Latex/Macros/Icon♪ new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/vu-cs-standard-thesis/Latex/Macros/Icon♪ 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♪ b/vu-cs-standard-thesis/Latex/StyleFiles/Icon♪ new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/vu-cs-standard-thesis/Latex/StyleFiles/Icon♪ 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 Binary files differnew file mode 100644 index 0000000..82027c5 --- /dev/null +++ b/vu-cs-standard-thesis/Latex/latex_intro.pdf 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 <chughes@maths.tcd.ie> +% 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 <char><set><truecase><falsecase> +% +\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<x><y><z> with <x> for [eo], <y> from [lcr] +% and <z> 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 <bmoses@dpdx.net>. +%% +\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 <RETURN> 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 <option> + % colon - multiple citations separated by colon (default) + % comma - separated by comma + % authoryear - selects author-year citations (default) + % numbers- selects numerical citations + % super - numerical citations as superscripts + % sort - sorts multiple citations according to order in ref. list + % sort&compress - like sort, but also compresses numerical citations + % longnamesfirst - makes first citation full author list + % sectionbib - puts bibliography in a \section* instead of \chapter* + % Punctuation so selected dominates over any predefined ones. + % LaTeX2e options are called as, e.g. + % \usepackage[square,comma]{natbib} + % LaTeX the source file natbib.dtx to obtain more details + % or the file natnotes.tex for a brief reference sheet. + %----------------------------------------------------------- +\@ifclassloaded{aguplus}{\PackageError{natbib} + {The aguplus class already includes natbib coding,\MessageBreak + so you should not add it explicitly} + {Type <Return> for now, but then later remove\MessageBreak + the command \protect\usepackage{natbib} from the document} + \endinput}{} +\@ifclassloaded{nlinproc}{\PackageError{natbib} + {The nlinproc class already includes natbib coding,\MessageBreak + so you should not add it explicitly} + {Type <Return> for now, but then later remove\MessageBreak + the command \protect\usepackage{natbib} from the document} + \endinput}{} +\@ifclassloaded{egs}{\PackageError{natbib} + {The egs class already includes natbib coding,\MessageBreak + so you should not add it explicitly} + {Type <Return> for now, but then later remove\MessageBreak + the command \protect\usepackage{natbib} from the document} + \endinput}{} + % Define citation punctuation for some author-year styles + % One may add and delete at this point + % Or put additions into local configuration file natbib.cfg +\newcommand\bibstyle@chicago{\bibpunct{(}{)}{;}{a}{,}{,}} +\newcommand\bibstyle@named{\bibpunct{[}{]}{;}{a}{,}{,}} +\newcommand\bibstyle@agu{\bibpunct{[}{]}{;}{a}{,}{,~}}%Amer. Geophys. Union +\newcommand\bibstyle@egs{\bibpunct{(}{)}{;}{a}{,}{,}}%Eur. Geophys. Soc. +\newcommand\bibstyle@agsm{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}} +\newcommand\bibstyle@kluwer{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}} +\newcommand\bibstyle@dcu{\bibpunct{(}{)}{;}{a}{;}{,}\gdef\harvardand{and}} +\newcommand\bibstyle@aa{\bibpunct{(}{)}{;}{a}{}{,}} %Astronomy & Astrophysics +\newcommand\bibstyle@pass{\bibpunct{(}{)}{;}{a}{,}{,}}%Planet. & Space Sci +\newcommand\bibstyle@anngeo{\bibpunct{(}{)}{;}{a}{,}{,}}%Annales Geophysicae +\newcommand\bibstyle@nlinproc{\bibpunct{(}{)}{;}{a}{,}{,}}%Nonlin.Proc.Geophys. + % Define citation punctuation for some numerical styles +\newcommand\bibstyle@cospar{\bibpunct{/}{/}{,}{n}{}{}% + \gdef\NAT@biblabelnum##1{##1.}} +\newcommand\bibstyle@esa{\bibpunct{(}{)}{,}{n}{}{}% + \gdef\NAT@biblabelnum##1{##1.\hspace{1em}}% + \gdef\NAT@citenum##1##2##3{\NAT@@open \if\relax##2\relax\else + ##2\ \fi Ref.~##1\if\relax##3\relax\else\NAT@cmt\ + ##3\fi\NAT@@close\endgroup}} +\newcommand\bibstyle@nature{\bibpunct{}{}{,}{s}{}{\textsuperscript{,}}% + \gdef\NAT@biblabelnum##1{##1.}} + % The standard LaTeX styles +\newcommand\bibstyle@plain{\bibpunct{[}{]}{,}{n}{}{,}} +\let\bibstyle@alpha=\bibstyle@plain +\let\bibstyle@abbrv=\bibstyle@plain +\let\bibstyle@unsrt=\bibstyle@plain + % The author-year modifications of the standard styles +\newcommand\bibstyle@plainnat{\bibpunct{[}{]}{,}{a}{,}{,}} +\let\bibstyle@abbrvnat=\bibstyle@plainnat +\let\bibstyle@unsrtnat=\bibstyle@plainnat +\newif\ifNAT@numbers \NAT@numbersfalse +\newif\ifNAT@super \NAT@superfalse +\DeclareOption{numbers}{\NAT@numberstrue + \ExecuteOptions{square,comma,nobibstyle}} +\DeclareOption{super}{\NAT@supertrue\NAT@numberstrue + \ExecuteOptions{nobibstyle}} +\DeclareOption{authoryear}{\NAT@numbersfalse + \ExecuteOptions{round,colon,bibstyle}} +\DeclareOption{round}{% + \renewcommand\NAT@open{(} \renewcommand\NAT@close{)} + \ExecuteOptions{nobibstyle}} +\DeclareOption{square}{% + \renewcommand\NAT@open{[} \renewcommand\NAT@close{]} + \ExecuteOptions{nobibstyle}} +\DeclareOption{angle}{% + \renewcommand\NAT@open{$<$} \renewcommand\NAT@close{$>$} + \ExecuteOptions{nobibstyle}} +\DeclareOption{curly}{% + \renewcommand\NAT@open{\{} \renewcommand\NAT@close{\}} + \ExecuteOptions{nobibstyle}} +\DeclareOption{comma}{\renewcommand\NAT@sep{,} + \ExecuteOptions{nobibstyle}} +\DeclareOption{colon}{\renewcommand\NAT@sep{;} + \ExecuteOptions{nobibstyle}} +\DeclareOption{nobibstyle}{\let\bibstyle=\@gobble} +\DeclareOption{bibstyle}{\let\bibstyle=\@citestyle} +\newif\ifNAT@openbib \NAT@openbibfalse +\DeclareOption{openbib}{\NAT@openbibtrue} +\DeclareOption{sectionbib}{\def\NAT@sectionbib{on}} +\def\NAT@sort{0} +\DeclareOption{sort}{\def\NAT@sort{1}} +\DeclareOption{sort&compress}{\def\NAT@sort{2}} +\@ifpackageloaded{cite}{\PackageWarningNoLine{natbib} + {The `cite' package should not be used\MessageBreak + with natbib. Use option `sort' instead}\ExecuteOptions{sort}}{} +\newif\ifNAT@longnames\NAT@longnamesfalse +\DeclareOption{longnamesfirst}{\NAT@longnamestrue} +\DeclareOption{nonamebreak}{\def\NAT@nmfmt#1{\mbox{#1}}} +\def\NAT@nmfmt#1{{#1}} +\renewcommand\bibstyle[1]{\@ifundefined{bibstyle@#1}{\relax} + {\csname bibstyle@#1\endcsname}} +\AtBeginDocument{\global\let\bibstyle=\@gobble} +\let\@citestyle\bibstyle +\newcommand\citestyle[1]{\@citestyle{#1}\let\bibstyle\@gobble} +\@onlypreamble{\citestyle}\@onlypreamble{\@citestyle} +\newcommand\bibpunct[7][,]% + {\gdef\NAT@open{#2}\gdef\NAT@close{#3}\gdef + \NAT@sep{#4}\global\NAT@numbersfalse\ifx #5n\global\NAT@numberstrue + \else + \ifx #5s\global\NAT@numberstrue\global\NAT@supertrue + \fi\fi + \gdef\NAT@aysep{#6}\gdef\NAT@yrsep{#7}% + \gdef\NAT@cmt{#1}% + \global\let\bibstyle\@gobble + } +\@onlypreamble{\bibpunct} +\newcommand\NAT@open{(} \newcommand\NAT@close{)} +\newcommand\NAT@sep{;} +\ProcessOptions +\newcommand\NAT@aysep{,} \newcommand\NAT@yrsep{,} +\newcommand\NAT@cmt{,} +\newcommand\NAT@cite% + [3]{\ifNAT@swa\NAT@@open\if\relax#2\relax\else#2\ \fi + #1\if\relax#3\relax\else\NAT@cmt\ #3\fi\NAT@@close\else#1\fi\endgroup} +\newcommand\NAT@citenum% + [3]{\ifNAT@swa\NAT@@open\if\relax#2\relax\else#2\ \fi + #1\if\relax#3\relax\else\NAT@cmt\ #3\fi\NAT@@close\else#1\fi\endgroup} +\newcommand\NAT@citesuper[3]{\ifNAT@swa +\unskip\hspace{1\p@}\textsuperscript{#1}% + \if\relax#3\relax\else\ (#3)\fi\else #1\fi\endgroup} +\providecommand + \textsuperscript[1]{\mbox{$^{\mbox{\scriptsize#1}}$}} +\providecommand\@firstofone[1]{#1} +\newcommand\NAT@citexnum{} +\def\NAT@citexnum[#1][#2]#3{% + \NAT@sort@cites{#3}% + \let\@citea\@empty + \@cite{\def\NAT@num{-1}\let\NAT@last@yr\relax\let\NAT@nm\@empty + \@for\@citeb:=\NAT@cite@list\do + {\edef\@citeb{\expandafter\@firstofone\@citeb}% + \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi + \@ifundefined{b@\@citeb\@extra@b@citeb}{% + {\reset@font\bfseries?} + \NAT@citeundefined\PackageWarning{natbib}% + {Citation `\@citeb' on page \thepage \space undefined}}% + {\let\NAT@last@num\NAT@num\let\NAT@last@nm\NAT@nm + \NAT@parse{\@citeb}% + \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{% + \let\NAT@name=\NAT@all@names + \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}% + \fi + \ifNAT@full\let\NAT@nm\NAT@all@names\else + \let\NAT@nm\NAT@name\fi + \ifNAT@swa + \ifnum\NAT@ctype=2\relax\@citea + \hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@test{2}\hyper@natlinkend\else + \ifnum\NAT@sort>1 + \begingroup\catcode`\_=8 + \ifcat _\ifnum\z@<0\NAT@num _\else A\fi + \global\let\NAT@nm=\NAT@num \else \gdef\NAT@nm{-2}\fi + \ifcat _\ifnum\z@<0\NAT@last@num _\else A\fi + \global\@tempcnta=\NAT@last@num \global\advance\@tempcnta by\@ne + \else \global\@tempcnta\m@ne\fi + \endgroup + \ifnum\NAT@nm=\@tempcnta + \ifx\NAT@last@yr\relax + \edef\NAT@last@yr{\@citea \mbox{\NAT@num}}% + \else + \edef\NAT@last@yr{--\penalty\@m\mbox{\NAT@num}}% + \fi + \else + \NAT@last@yr \@citea \mbox{\NAT@num}% + \let\NAT@last@yr\relax + \fi + \else + \@citea \mbox{\hyper@natlinkstart{\@citeb\@extra@b@citeb}\NAT@num + \hyper@natlinkend}% + \fi + \fi + \def\@citea{\NAT@sep\penalty\@m\NAT@space}% + \else + \ifcase\NAT@ctype\relax + \ifx\NAT@last@nm\NAT@nm \NAT@yrsep\penalty\@m\NAT@space\else + \@citea \NAT@test{1}\ \NAT@@open + \if\relax#1\relax\else#1\ \fi\fi \NAT@mbox{% + \hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@num\hyper@natlinkend}% + \def\@citea{\NAT@@close\NAT@sep\penalty\@m\ }% + \or\@citea + \hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@test{1}\hyper@natlinkend + \def\@citea{\NAT@sep\penalty\@m\ }% + \or\@citea + \hyper@natlinkstart{\@citeb\@extra@b@citeb}\NAT@test{2}% + \hyper@natlinkend + \def\@citea{\NAT@sep\penalty\@m\ }% + \fi + \fi + }}% + \ifnum\NAT@sort>1\NAT@last@yr\fi + \ifNAT@swa\else\ifnum\NAT@ctype=0\if\relax#2\relax\else + \NAT@cmt\ #2\fi \NAT@@close\fi\fi}{#1}{#2}} +\newcommand\NAT@test[1]{\ifnum#1=1 \ifx\NAT@nm\NAT@noname + {\reset@font\bfseries(author?)}\PackageWarning{natbib} + {Author undefined for citation`\@citeb' + \MessageBreak + on page \thepage}\else \NAT@nm \fi + \else \if\relax\NAT@date\relax + {\reset@font\bfseries(year?)}\PackageWarning{natbib} + {Year undefined for citation`\@citeb' + \MessageBreak + on page \thepage}\else \NAT@date \fi \fi} +\newcommand\NAT@citex{} +\def\NAT@citex% + [#1][#2]#3{% + \NAT@sort@cites{#3}% + \let\@citea\@empty + \@cite{\let\NAT@nm\@empty\let\NAT@year\@empty + \@for\@citeb:=\NAT@cite@list\do + {\edef\@citeb{\expandafter\@firstofone\@citeb}% + \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi + \@ifundefined{b@\@citeb\@extra@b@citeb}{\@citea% + {\reset@font\bfseries ?}\NAT@citeundefined + \PackageWarning{natbib}% + {Citation `\@citeb' on page \thepage \space undefined}}% + {\let\NAT@last@nm=\NAT@nm\let\NAT@last@yr=\NAT@year + \NAT@parse{\@citeb}% + \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{% + \let\NAT@name=\NAT@all@names + \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}% + \fi + \ifNAT@full\let\NAT@nm\NAT@all@names\else + \let\NAT@nm\NAT@name\fi + \ifNAT@swa\ifcase\NAT@ctype + \ifx\NAT@last@nm\NAT@nm\NAT@yrsep + \ifx\NAT@last@yr\NAT@year + \hyper@natlinkstart{\@citeb\@extra@b@citeb}\NAT@exlab + \hyper@natlinkend + \else\unskip\ + \hyper@natlinkstart{\@citeb\@extra@b@citeb}\NAT@date + \hyper@natlinkend + \fi + \else\@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@nmfmt{\NAT@nm}% + \hyper@natlinkbreak{\NAT@aysep\ }{\@citeb\@extra@b@citeb}% + \NAT@date\hyper@natlinkend + \fi + \or\@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@nmfmt{\NAT@nm}\hyper@natlinkend + \or\@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@date\hyper@natlinkend + \fi \def\@citea{\NAT@sep\ }% + \else\ifcase\NAT@ctype + \ifx\NAT@last@nm\NAT@nm\NAT@yrsep + \ifx\NAT@last@yr\NAT@year + \hyper@natlinkstart{\@citeb\@extra@b@citeb}\NAT@exlab + \hyper@natlinkend + \else\unskip\ + \hyper@natlinkstart{\@citeb\@extra@b@citeb}\NAT@date + \hyper@natlinkend + \fi + \else\@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@nmfmt{\NAT@nm}% + \hyper@natlinkbreak{\ \NAT@@open\if\relax#1\relax\else#1\ \fi}% + {\@citeb\@extra@b@citeb}% + \NAT@date\hyper@natlinkend\fi + \or\@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@nmfmt{\NAT@nm}\hyper@natlinkend + \or\@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}% + \NAT@date\hyper@natlinkend\fi \def\@citea{\NAT@@close\NAT@sep\ }% + \fi + }}\ifNAT@swa\else\if\relax#2\relax\else\NAT@cmt\ #2\fi + \NAT@@close\fi}{#1}{#2}} +\newif\ifNAT@par \NAT@partrue +\newcommand\NAT@@open{\ifNAT@par\NAT@open\fi} +\newcommand\NAT@@close{\ifNAT@par\NAT@close\fi} +\newcommand\shortcites[1]{% + \@bsphack\@for\@citeb:=#1\do + {\edef\@citeb{\expandafter\@firstofone\@citeb}% + \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}\@esphack} +\newcommand\NAT@biblabel[1]{\hfill} +\newcommand\NAT@biblabelnum[1]{[#1]} +\def\@tempa#1{[#1]} +\ifx\@tempa\@biblabel\let\@biblabel\@empty\fi +\newcommand\NAT@bibsetnum[1]{\settowidth\labelwidth{\@biblabel{#1}}% + \setlength{\leftmargin}{\labelwidth}\addtolength{\leftmargin}{\labelsep}% + \setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@}% + \ifNAT@openbib + \addtolength{\leftmargin}{\bibindent}% + \setlength{\itemindent}{-\bibindent}% + \setlength{\listparindent}{\itemindent}% + \setlength{\parsep}{0pt}% + \fi +} +\newlength{\bibhang} +\setlength{\bibhang}{1em} +\newlength{\bibsep} +{\@listi \global\bibsep\itemsep \global\advance\bibsep by\parsep} + +\newcommand\NAT@bibsetup% + [1]{\setlength{\leftmargin}{\bibhang}\setlength{\itemindent}{-\leftmargin}% + \setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@}} +\newcommand\NAT@set@cites{\ifNAT@numbers + \ifNAT@super \let\@cite\NAT@citesuper + \def\NAT@mbox##1{\unskip\nobreak\hspace{1\p@}\textsuperscript{##1}}% + \let\citeyearpar=\citeyear + \let\NAT@space\relax\else + \let\NAT@mbox=\mbox + \let\@cite\NAT@citenum \def\NAT@space{ }\fi + \let\@citex\NAT@citexnum + \ifx\@biblabel\@empty\let\@biblabel\NAT@biblabelnum\fi + \let\@bibsetup\NAT@bibsetnum + \def\natexlab##1{}% + \else + \let\@cite\NAT@cite + \let\@citex\NAT@citex + \let\@biblabel\NAT@biblabel + \let\@bibsetup\NAT@bibsetup + \def\natexlab##1{##1}% + \fi} +\AtBeginDocument{\NAT@set@cites} +\AtBeginDocument{\ifx\SK@def\@undefined\else +\ifx\SK@cite\@empty\else + \SK@def\@citex[#1][#2]#3{\SK@\SK@@ref{#3}\SK@@citex[#1][#2]{#3}}\fi +\ifx\SK@citeauthor\@undefined\def\HAR@checkdef{}\else + \let\citeauthor\SK@citeauthor + \let\citefullauthor\SK@citefullauthor + \let\citeyear\SK@citeyear\fi +\fi} +\AtBeginDocument{\@ifpackageloaded{hyperref}{% + \ifnum\NAT@sort=2\def\NAT@sort{1}\fi}{}} +\newif\ifNAT@full\NAT@fullfalse +\newif\ifNAT@swa +\DeclareRobustCommand\citet + {\begingroup\NAT@swafalse\def\NAT@ctype{0}\NAT@partrue + \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}} +\newcommand\NAT@citetp{\@ifnextchar[{\NAT@@citetp}{\NAT@@citetp[]}} +\newcommand\NAT@@citetp{} +\def\NAT@@citetp[#1]{\@ifnextchar[{\@citex[#1]}{\@citex[][#1]}} +\DeclareRobustCommand\citep + {\begingroup\NAT@swatrue\def\NAT@ctype{0}\NAT@partrue + \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}} +\DeclareRobustCommand\cite + {\begingroup\def\NAT@ctype{0}\NAT@partrue\NAT@swatrue + \@ifstar{\NAT@fulltrue\NAT@cites}{\NAT@fullfalse\NAT@cites}} +\newcommand\NAT@cites{\@ifnextchar [{\NAT@@citetp}{% + \ifNAT@numbers\else + \NAT@swafalse + \fi + \NAT@@citetp[]}} +\DeclareRobustCommand\citealt + {\begingroup\NAT@swafalse\def\NAT@ctype{0}\NAT@parfalse + \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}} +\DeclareRobustCommand\citealp + {\begingroup\NAT@swatrue\def\NAT@ctype{0}\NAT@parfalse + \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}} +\DeclareRobustCommand\citeauthor + {\begingroup\NAT@swafalse\def\NAT@ctype{1}\NAT@parfalse + \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}} +\DeclareRobustCommand\citeyear + {\begingroup\NAT@swafalse\def\NAT@ctype{2}\NAT@parfalse\NAT@citetp} +\DeclareRobustCommand\citeyearpar + {\begingroup\NAT@swatrue\def\NAT@ctype{2}\NAT@partrue\NAT@citetp} +\newcommand\citetext[1]{\NAT@open#1\NAT@close} +\DeclareRobustCommand\citefullauthor + {\citeauthor*} +\renewcommand\nocite[1]{\@bsphack + \@for\@citeb:=#1\do{% + \edef\@citeb{\expandafter\@firstofone\@citeb}% + \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi + \if*\@citeb\else + \@ifundefined{b@\@citeb\@extra@b@citeb}{% + \NAT@citeundefined \PackageWarning{natbib}% + {Citation `\@citeb' undefined}}{}\fi}% + \@esphack} +\newcommand\NAT@parse[1]{{% + \let\protect=\@unexpandable@protect\let~\relax + \let\active@prefix=\@gobble + \xdef\NAT@temp{\csname b@#1\@extra@b@citeb\endcsname}}% + \expandafter\NAT@split\NAT@temp + \expandafter\NAT@parse@date\NAT@date??????@@% + \ifciteindex\NAT@index\fi +} +\newcommand\NAT@split[4]{% + \gdef\NAT@num{#1}\gdef\NAT@name{#3}\gdef\NAT@date{#2}% + \gdef\NAT@all@names{#4}% + \ifx\NAT@noname\NAT@all@names \gdef\NAT@all@names{#3}\fi} +\newcommand\NAT@parse@date{} +\def\NAT@parse@date#1#2#3#4#5#6@@{% + \ifnum\the\catcode`#1=11\def\NAT@year{}\def\NAT@exlab{#1}\else + \ifnum\the\catcode`#2=11\def\NAT@year{#1}\def\NAT@exlab{#2}\else + \ifnum\the\catcode`#3=11\def\NAT@year{#1#2}\def\NAT@exlab{#3}\else + \ifnum\the\catcode`#4=11\def\NAT@year{#1#2#3}\def\NAT@exlab{#4}\else + \def\NAT@year{#1#2#3#4}\def\NAT@exlab{{#5}}\fi\fi\fi\fi} +\newcommand\NAT@index{} +\let\NAT@makeindex=\makeindex +\renewcommand\makeindex{\NAT@makeindex + \renewcommand\NAT@index{\@bsphack\begingroup + \def~{\string~}\@wrindex{\NAT@idxtxt}}} +\newcommand\NAT@idxtxt{\NAT@name\ \NAT@open\NAT@date\NAT@close} +\newif\ifciteindex \citeindexfalse +\newcommand\citeindextype{default} +\newcommand\NAT@index@alt{{\let\protect=\noexpand\let~\relax + \xdef\NAT@temp{\NAT@idxtxt}}\expandafter\NAT@exp\NAT@temp\@nil} +\newcommand\NAT@exp{} +\def\NAT@exp#1\@nil{\index[\citeindextype]{#1}} + +\AtBeginDocument{% +\@ifpackageloaded{index}{\let\NAT@index=\NAT@index@alt}{}} +\newcommand\NAT@ifcmd{\futurelet\NAT@temp\NAT@ifxcmd} +\newcommand\NAT@ifxcmd{\ifx\NAT@temp\relax\else\expandafter\NAT@bare\fi} +\def\NAT@bare#1(#2)#3()#4\@nil#5{% + \if\relax#2\relax + \expandafter\NAT@apalk#1, , \@nil{#5}\else + \stepcounter{NAT@ctr}% + \NAT@wrout{\arabic {NAT@ctr}}{#2}{#1}{#3}{#5} +\fi +} +\newcommand\NAT@wrout[5]{% +\if@filesw + {\let\protect\noexpand\let~\relax + \immediate + \write\@auxout{\string\bibcite{#5}{{#1}{#2}{{#3}}{{#4}}}}}\fi +\ignorespaces} +\def\NAT@noname{{}} +\renewcommand\bibitem{% + \@ifnextchar[{\@lbibitem}{% + \global\NAT@stdbsttrue + \stepcounter{NAT@ctr}\@lbibitem[\arabic{NAT@ctr}]}} +\def\@lbibitem[#1]#2{% + \if\relax\@extra@b@citeb\relax\else + \@ifundefined{br@#2\@extra@b@citeb}{}{% + \@namedef{br@#2}{\@nameuse{br@#2\@extra@b@citeb}}}\fi + \@ifundefined{b@#2\@extra@b@citeb}{\def\NAT@num{}}{\NAT@parse{#2}}% + \item[\hfil\hyper@natanchorstart{#2\@extra@b@citeb}\@biblabel{\NAT@num}% + \hyper@natanchorend]% + \NAT@ifcmd#1()()\@nil{#2}} +\ifx\SK@lbibitem\@undefined\else + \let\SK@lbibitem\@lbibitem + \def\@lbibitem[#1]#2{% + \SK@lbibitem[#1]{#2}\SK@\SK@@label{#2}\ignorespaces}\fi +\newif\ifNAT@stdbst \NAT@stdbstfalse + +\AtEndDocument + {\ifNAT@stdbst\if@filesw\immediate\write\@auxout{\string + \global\string\NAT@numberstrue}\fi\fi + } +\providecommand\bibcite{} +\renewcommand\bibcite[2]{\@ifundefined{b@#1\@extra@binfo}\relax + {\NAT@citemultiple + \PackageWarningNoLine{natbib}{Citation `#1' multiply defined}}% + \global\@namedef{b@#1\@extra@binfo}{#2}} +\AtEndDocument{\NAT@swatrue\renewcommand\bibcite[2]% + {\NAT@testdef{#1}{#2}}} +\newcommand\NAT@testdef[2]{% + \def\NAT@temp{#2}\expandafter \ifx \csname b@#1\@extra@binfo\endcsname + \NAT@temp \else \ifNAT@swa \NAT@swafalse + \PackageWarningNoLine{natbib}{Citation(s) may have + changed.\MessageBreak + Rerun to get citations correct}\fi\fi} +\newcommand\NAT@apalk{} +\def\NAT@apalk#1, #2, #3\@nil#4{\if\relax#2\relax + \global\NAT@stdbsttrue + \NAT@wrout{#1}{}{}{}{#4}\else + \stepcounter{NAT@ctr}% + \NAT@wrout{\arabic {NAT@ctr}}{#2}{#1}{}{#4}\fi} +\newcommand\citeauthoryear{} +\def\citeauthoryear#1#2#3()()\@nil#4{\stepcounter{NAT@ctr}\if\relax#3\relax + \NAT@wrout{\arabic {NAT@ctr}}{#2}{#1}{}{#4}\else + \NAT@wrout{\arabic {NAT@ctr}}{#3}{#2}{#1}{#4}\fi} +\newcommand\citestarts{\NAT@open} +\newcommand\citeends{\NAT@close} +\newcommand\betweenauthors{and} +\newcommand\astroncite{} +\def\astroncite#1#2()()\@nil#3{\stepcounter{NAT@ctr}\NAT@wrout{\arabic +{NAT@ctr}}{#2}{#1}{}{#3}} +\newcommand\citename{} +\def\citename#1#2()()\@nil#3{\expandafter\NAT@apalk#1#2, \@nil{#3}} +\newcommand\harvarditem[4][]% + {\if\relax#1\relax\bibitem[#2(#3)]{#4}\else + \bibitem[#1(#3)#2]{#4}\fi } +\newcommand\harvardleft{\NAT@open} +\newcommand\harvardright{\NAT@close} +\newcommand\harvardyearleft{\NAT@open} +\newcommand\harvardyearright{\NAT@close} +\AtBeginDocument{\providecommand{\harvardand}{and}} +\newcommand\harvardurl[1]{\textbf{URL:} \textit{#1}} +\providecommand\bibsection{} +\@ifundefined{chapter}% + {\renewcommand\bibsection{\section*{\refname + \@mkboth{\MakeUppercase{\refname}}{\MakeUppercase{\refname}}}}} + {\@ifundefined{NAT@sectionbib}% + {\renewcommand\bibsection{\chapter*{\bibname + \@mkboth{\MakeUppercase{\bibname}}{\MakeUppercase{\bibname}}}}} + {\renewcommand\bibsection{\section*{\bibname + \ifx\@mkboth\@gobbletwo\else\markright{\MakeUppercase{\bibname}}\fi}}}} +\@ifclassloaded{amsart}% + {\renewcommand\bibsection{\section*{\refname}}{}}{} +\@ifclassloaded{amsbook}% + {\renewcommand\bibsection{\section*{\bibname}}{}}{} +\@ifundefined{bib@heading}{}{\let\bibsection\bib@heading} +\newcounter{NAT@ctr} +\renewenvironment{thebibliography}[1]{% + \bibfont\bibsection\parindent \z@\list + {\@biblabel{\arabic{NAT@ctr}}}{\@bibsetup{#1}% + \setcounter{NAT@ctr}{0}}% + \ifNAT@openbib + \renewcommand\newblock{\par} + \else + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax + \let\citeN\cite \let\shortcite\cite + \let\citeasnoun\cite + }{\def\@noitemerr{% + \PackageWarning{natbib} + {Empty `thebibliography' environment}}% + \endlist\vskip-\lastskip} +\let\bibfont=\relax +\providecommand\reset@font{\relax} +\providecommand\bibname{Bibliography} +\providecommand\refname{References} +\newcommand\NAT@citeundefined{\gdef \NAT@undefined {% + \PackageWarningNoLine{natbib}{There were undefined citations}}} +\let \NAT@undefined \relax +\newcommand\NAT@citemultiple{\gdef \NAT@multiple {% + \PackageWarningNoLine{natbib}{There were multiply defined citations}}} +\let \NAT@multiple \relax +\AtEndDocument{\NAT@undefined\NAT@multiple} +\providecommand\@mkboth[2]{} +\providecommand\MakeUppercase{\uppercase} +\providecommand{\@extra@b@citeb}{} +\gdef\@extra@binfo{} +\providecommand\hyper@natanchorstart[1]{} +\providecommand\hyper@natanchorend{} +\providecommand\hyper@natlinkstart[1]{} +\providecommand\hyper@natlinkend{} +\providecommand\hyper@natlinkbreak[2]{#1} +\@ifpackageloaded{babel}{\PackageWarningNoLine{natbib}{% +If you use both babel and natbib\MessageBreak +then load babel AFTER natbib}}{} +\AtBeginDocument{\@ifpackageloaded{babel}{% +\bbl@redefine\@citex[#1][#2]#3{% + \@safe@activestrue\org@@citex[#1][#2]{#3}\@safe@activesfalse}% +}{}} +\ifnum\NAT@sort>0 +\newcommand\NAT@sort@cites[1]{% +\@tempcntb\m@ne +\let\@celt\delimiter +\def\NAT@num@list{}% +\def\NAT@cite@list{}% +\def\NAT@nonsort@list{}% +\@for \@citeb:=#1\do{\NAT@make@cite@list}% +\edef\NAT@cite@list{\NAT@cite@list\NAT@nonsort@list}% +\edef\NAT@cite@list{\expandafter\NAT@xcom\NAT@cite@list @@}} +\begingroup \catcode`\_=8 +\gdef\NAT@make@cite@list{% + \edef\@citeb{\expandafter\@firstofone\@citeb}% + \@ifundefined{b@\@citeb\@extra@b@citeb}{\def\NAT@num{A}}% + {\NAT@parse{\@citeb}}% + \ifcat _\ifnum\z@<0\NAT@num _\else A\fi + \@tempcnta\NAT@num \relax + \ifnum \@tempcnta>\@tempcntb + \edef\NAT@num@list{\NAT@num@list \@celt{\NAT@num}}% + \edef\NAT@cite@list{\NAT@cite@list\@citeb,}% + \@tempcntb\@tempcnta + \else + \let\NAT@@cite@list=\NAT@cite@list \def\NAT@cite@list{}% + \edef\NAT@num@list{\expandafter\NAT@num@celt \NAT@num@list \@gobble @}% + {\let\@celt=\NAT@celt\NAT@num@list}% + \fi + \else + \edef\NAT@nonsort@list{\NAT@nonsort@list\@citeb,}% + \fi} +\endgroup +\def\NAT@celt#1{\ifnum #1<\@tempcnta + \xdef\NAT@cite@list{\NAT@cite@list\expandafter\NAT@nextc\NAT@@cite@list @@}% + \xdef\NAT@@cite@list{\expandafter\NAT@restc\NAT@@cite@list}% + \else + \xdef\NAT@cite@list{\NAT@cite@list\@citeb,\NAT@@cite@list}\let\@celt\@gobble% + \fi} +\def\NAT@num@celt#1#2{\ifx \@celt #1% + \ifnum #2<\@tempcnta + \@celt{#2}% + \expandafter\expandafter\expandafter\NAT@num@celt + \else + \@celt{\number\@tempcnta}\@celt{#2}% + \fi\fi} +\def\NAT@nextc#1,#2@@{#1,} +\def\NAT@restc#1,#2{#2} +\def\NAT@xcom#1,@@{#1} +\else + \newcommand\NAT@sort@cites[1]{\edef\NAT@cite@list{#1}}\fi +\InputIfFileExists{natbib.cfg} + {\typeout{Local config file natbib.cfg used}}{} +%% +%% <<<<< End of decommented file <<<<<< +%% +%% End of file `natbib.sty'. diff --git a/vu-cs-standard-thesis/nomencl.sty b/vu-cs-standard-thesis/nomencl.sty new file mode 100644 index 0000000..ba8fa67 --- /dev/null +++ b/vu-cs-standard-thesis/nomencl.sty @@ -0,0 +1,192 @@ +%% +%% This is file `nomencl.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% nomencl.dtx (with options: `package') +%% +%% Copyright 1996 Boris Veytsman +%% Copyright 1999-2001 Bernd Schandl +%% www http://sarovar.org/projects/nomencl +%% +%% This file can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License distributed from CTAN +%% archives in the directory macros/latex/base/lppl.txt; either +%% version 1.2 of the license, or (at your option) any later version. +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\ProvidesPackage{nomencl}% + [2005/09/22 v4.2 Nomenclature package (LN)] +\NeedsTeXFormat{LaTeX2e} +\newif\if@printeqref +\newif\if@printpageref +\newif\if@intoc +\newif\if@compatibilitymode +\DeclareOption{refeq}{\@printeqreftrue} +\DeclareOption{norefeq}{\@printeqreffalse} +\DeclareOption{refpage}{\@printpagereftrue} +\DeclareOption{norefpage}{\@printpagereffalse} +\DeclareOption{intoc}{\@intoctrue} +\DeclareOption{notintoc}{\@intocfalse} +\DeclareOption{compatible}{\@compatibilitymodetrue} +\DeclareOption{noncompatible}{\@compatibilitymodefalse} +\DeclareOption{prefix}{\def\nomprefix{a}} +\DeclareOption{noprefix}{\def\nomprefix{}} +\newif\if@loadcfg +\DeclareOption{cfg}{\@loadcfgtrue} +\DeclareOption{nocfg}{\@loadcfgfalse} +\DeclareOption{croatian}{% + \def\eqdeclaration#1{, vidi jednad\v{z}bu\nobreakspace(#1)}% + \def\pagedeclaration#1{, stranica\nobreakspace#1}% + \def\nomname{Popis simbola}} +\DeclareOption{danish}{% + \def\eqdeclaration#1{, se ligning\nobreakspace(#1)}% + \def\pagedeclaration#1{, side\nobreakspace#1}% + \def\nomname{Symbolliste}} +\DeclareOption{english}{% + \def\eqdeclaration#1{, see equation\nobreakspace(#1)}% + \def\pagedeclaration#1{, page\nobreakspace#1}% + \def\nomname{Nomenclature}} +\DeclareOption{french}{% + \def\eqdeclaration#1{, voir \'equation\nobreakspace(#1)}% + \def\pagedeclaration#1{, page\nobreakspace#1}% + \def\nomname{Liste des symboles}} +\DeclareOption{german}{% + \def\eqdeclaration#1{, siehe Gleichung\nobreakspace(#1)}% + \def\pagedeclaration#1{, Seite\nobreakspace#1}% + \def\nomname{Symbolverzeichnis}} +\DeclareOption{italian}{% +\def\eqdeclaration#1{, vedi equazione\nobreakspace(#1)}% +\def\pagedeclaration#1{, pagina\nobreakspace#1}% +\def\nomname{Elenco dei simboli}} +\DeclareOption{polish}{% + \def\eqdeclaration#1{, porownaj rownanie\nobreakspace(#1)}% + \def\pagedeclaration#1{, strona\nobreakspace#1}% + \def\nomname{Lista symboli}} +\DeclareOption{portuguese}{% + \def\eqdeclaration#1{, veja equa\c{c}\~ao\nobreakspace(#1)}% + \def\pagedeclaration#1{, p\'agina\nobreakspace#1}% + \def\nomname{Nomenclatura}} +\DeclareOption{russian}{% + \def\eqdeclaration#1{, \cyrs\cyrm.\nobreakspace(#1)}% + \def\pagedeclaration#1{, \cyrs\cyrt\cyrr.\nobreakspace#1}% + \def\nomname{\CYRS\cyrp\cyri\cyrs\cyro\cyrk% + \ \cyro\cyrb\cyro\cyrz\cyrn\cyra\cyrch\cyre\cyrn\cyri% + \cyrishrt}} +\DeclareOption{spanish}{% + \def\eqdeclaration#1{, v\'ease la ecuaci\'on\nobreakspace(#1)}% + \def\pagedeclaration#1{, p\'agina\nobreakspace#1}% + \def\nomname{Nomenclatura}} +\DeclareOption{ukrainian}{% + \def\eqdeclaration#1{, \cyrd\cyri\cyrv.\nobreakspace(#1)}% + \def\pagedeclaration#1{, \cyrs\cyrt\cyro\cyrr.\nobreakspace#1}% + \def\nomname{\CYRP\cyre\cyrr\cyre\cyrl\cyrii\cyrk% + \ \cyrp\cyro\cyrz\cyrn\cyra\cyrch\cyre\cyrn\cyrsftsn}} +\ExecuteOptions{noncompatible,notintoc,norefeq,norefpage,prefix,cfg,english} +\ProcessOptions\relax +\if@compatibilitymode% + \def\@outputfileextension{.glo}% + \def\@inputfileextension{.gls}% +\else% + \def\@outputfileextension{.nlo}% + \def\@inputfileextension{.nls}% +\fi% +\def\makenomenclature{% + \newwrite\@nomenclaturefile + \immediate\openout\@nomenclaturefile=\jobname\@outputfileextension + \def\@nomenclature{% + \@bsphack + \begingroup + \@sanitize + \@ifnextchar[% + {\@@@nomenclature}{\@@@nomenclature[\nomprefix]}}% + \typeout{Writing nomenclature file \jobname\@outputfileextension}% + \let\makenomenclature\@empty} +\if@compatibilitymode\let\makeglossary\makenomenclature\fi% +\def\nom@verb{\expandafter\strip@prefix\meaning} +\def\nomenclature{\protect\@nomenclature} +\def\@nomenclature{% + \@bsphack + \begingroup + \@sanitize + \@ifnextchar[% + {\@@nomenclature}{\@@nomenclature[\nomprefix]}} +\def\@@nomenclature[#1]#2#3{\endgroup\@esphack} +\def\@@@nomenclature[#1]#2#3{% + \def\@tempa{#2}\def\@tempb{#3}% + \protected@write\@nomenclaturefile{}% + {\string\nomenclatureentry{#1\nom@verb\@tempa @[{\nom@verb\@tempa}]% + \begingroup\nom@verb\@tempb\protect\nomeqref{\theequation}% + |nompageref}{\thepage}}% + \endgroup + \@esphack} +\def\nomgroup#1{} +\newdimen\nomlabelwidth +\nomlabelwidth1cm\relax +\newdimen\nom@tempdim +\def\printnomenclature{% + \@ifnextchar[% + {\@printnomenclature}{\@printnomenclature[\nomlabelwidth]}} +\def\@printnomenclature[#1]{% + \nom@tempdim#1\relax + \@input@{\jobname\@inputfileextension}} +\if@compatibilitymode\let\printglossary\printnomenclature\fi% +\def\nomlabel#1{#1\hfil} +\def\nompreamble{} +\def\nompostamble{} +\def\nomentryend{} +\newskip\nomitemsep +\nomitemsep\itemsep +\def\thenomenclature{% + \@ifundefined{chapter}% + { + \section*{\nomname} + \if@intoc\addcontentsline{toc}{section}{\nomname}\fi% + }% + { + \chapter*{\nomname} + \if@intoc\addcontentsline{toc}{chapter}{\nomname}\fi% + }% + + \nompreamble + \list{}{% + \labelwidth\nom@tempdim + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \itemsep\nomitemsep + \let\makelabel\nomlabel}} +\def\endthenomenclature{% + \endlist + \nompostamble} +\def\nomrefeq{\@printeqreftrue} +\def\nomrefpage{\@printpagereftrue} +\def\nomrefeqpage{\@printeqreftrue\@printpagereftrue} +\def\nomnorefeq{\@printeqreffalse} +\def\nomnorefpage{\@printpagereffalse} +\def\nomnorefeqpage{\@printeqreffalse\@printpagereffalse} +\def\nomeqref#1{\if@printeqref\eqdeclaration{#1}\fi\ignorespaces} +\def\nompageref#1{\if@printpageref\pagedeclaration{#1}\fi% + \nomentryend\endgroup} +\if@loadcfg + \InputIfFileExists{nomencl.cfg}{% + \typeout{Using the configuration file nomencl.cfg}}{} +\fi +\endinput +%% +%% End of file `nomencl.sty'. diff --git a/vu-cs-standard-thesis/references.bib b/vu-cs-standard-thesis/references.bib new file mode 100644 index 0000000..55e120d --- /dev/null +++ b/vu-cs-standard-thesis/references.bib @@ -0,0 +1,7 @@ +@book{wohlin12, + Title = {{Experimentation in Software Engineering - An Introduction}}, + Author = {Wohlin, C. and Runeson, P. and {H\"ost}, M. and Ohlsson, M.C. and Regnell, B. and {Wessl\'en}, A.}, + Publisher = {Kluwer Academic Publishers}, + Year = {2012}, + Keywords = {Empirical software engineering} +}
\ No newline at end of file diff --git a/vu-cs-standard-thesis/rotating.sty b/vu-cs-standard-thesis/rotating.sty new file mode 100644 index 0000000..23849c4 --- /dev/null +++ b/vu-cs-standard-thesis/rotating.sty @@ -0,0 +1,199 @@ +%% +%% This is file `rotating.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% rotating.dtx (with options: `package') +%% Copyright (C) 1994 Sebastian Rahtz and Leonor Barroca. All +%% rights reserved. Permission is granted to to customize the +%% declarations in this file to serve the needs of your installation. +%% However, no permission is granted to distribute a modified version of +%% this file under its original name. +%% +\def\fileversion{2.10} +\def\filedate{1995/08/22} +\def\docdate {1995/01/06} +%% File: rotating.dtx Copyright (C) 1995 Sebastian Rahtz and Leonor Barroca +\ProvidesPackage{rotating}[\filedate\space\fileversion\space Rotation package] +\NeedsTeXFormat{LaTeX2e} +\newif\if@rot@twoside +\DeclareOption{clockwise}{% this is for compatibility + \AtBeginDocument{\setkeys{Grot}{units=360}}% +} +\DeclareOption{counterclockwise}{% + \AtBeginDocument{\setkeys{Grot}{units=-360}}% +} +\DeclareOption{figuresleft}{% + \@rot@twosidefalse + \def\rot@LR{0}% +} +\DeclareOption{figuresright}{% + \@rot@twosidefalse + \def\rot@LR{-1}% +} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{graphics}} +\PassOptionsToPackage{dvips}{graphics} +\ExecuteOptions{clockwise} +\if@twoside + \@rot@twosidetrue +\else + \@rot@twosidefalse +\fi +\def\rot@LR{-1} +\ProcessOptions +\RequirePackage{graphicx} +\RequirePackage{ifthen} +\def\rotdriver#1{\makeatletter\input{#1.def}\makeatother} +\newcount\r@tfl@t +\r@tfl@t0 +\def\sideways{% + \Grot@setangle{90}% + \setbox\z@\hbox\bgroup\ignorespaces} +\def\endsideways{% + \unskip\egroup + \Grot@x\z@ + \Grot@y\z@ + \Grot@box +} +\def\turn#1{% + \Grot@setangle{#1}% + \setbox\z@\hbox\bgroup\ignorespaces} +\def\endturn{% + \unskip\egroup + \Grot@x\z@ + \Grot@y\z@ + \Grot@box +} +\def\rotate#1{% + \Grot@setangle{#1}% + \setbox\z@\hbox\bgroup\ignorespaces} +\def\endrotate{% + \unskip\egroup + \Grot@x\z@ + \Grot@y\z@ + \wd0\z@\dp0\z@\ht0\z@ + \Grot@box +} +\def\turnbox#1#2{% + \Grot@setangle{#1}% + \setbox\z@\hbox{{#2}}% + \Grot@x\z@\Grot@y\z@ + \wd0\z@\dp0\z@\ht0\z@ + \Grot@box +} +\newsavebox\rot@float@box +\def\@rotfloat#1{% + \@ifnextchar[% + {\@xrotfloat{#1}}% + {\edef\@tempa{\noexpand\@xrotfloat{#1}[\csname fps@#1\endcsname]}\@tempa}% +} +\def\@xrotfloat#1[#2]{% + \@float{#1}[#2]% + \begin{lrbox}\rot@float@box + \begin{minipage}\textheight + } +\def\end@rotfloat{% + \end{minipage}\end{lrbox}% + \global\advance\r@tfl@t by 1 + \label{RF\the\r@tfl@t}% + \message{Adding sideways figure on }% + \def\R@@page{\pageref{RF\the\r@tfl@t}}% + \wd\rot@float@box\z@ + \ht\rot@float@box\z@ + \dp\rot@float@box\z@ + \vbox to \textheight{% + \setkeys{Grot}{units=360}% + \if@rot@twoside + \def\R@@page{\pageref{RF\the\r@tfl@t}}% + \else + \let\R@@page\rot@LR + \fi + \ifthenelse{\isodd{\R@@page}}{% + \message{right hand page}% + \vfill + \centerline{\rotatebox{90}{\box\rot@float@box}}% + }{% + \message{left hand page}% + \centerline{\rotatebox{-90}{\box\rot@float@box}}% + \vfill + }% + }% + \end@float +} +\def\sidewaysfigure{\@rotfloat{figure}} +\let\endsidewaysfigure\end@rotfloat +\def\sidewaystable{\@rotfloat{table}} +\let\endsidewaystable\end@rotfloat +\def\@rotdblfloat{% + \if@twocolumn\let\reserved@a\@rotdbflt\else\let\reserved@a\@rotfloat\fi + \reserved@a} +\def\@rotdbflt#1{\@ifnextchar[{\@rotxdblfloat{#1}}{\@rotxdblfloat{#1}[tp]}} +\def\@rotxdblfloat#1[#2]{% + \hsize\textwidth\linewidth\textwidth + \@float{#1}[#2]% + \begin{lrbox}\rot@float@box + \begin{minipage}\textheight +} +\def\end@rotdblfloat{% + \end{minipage}\end{lrbox}% + \global\advance\r@tfl@t by 1 + \label{RF\the\r@tfl@t}% + \message{Adding sideways figure on }% + \def\R@@page{\pageref{RF\the\r@tfl@t}}% + \@tempdima\ht\rot@float@box + \advance\@tempdima by \dp\rot@float@box +\typeout{BOX wd: \the\wd\rot@float@box, ht: \the\ht\rot@float@box, dp: \the\dp\rot@float@box: so shift by .5 of \the\@tempdima}% + \wd\rot@float@box\z@ + \ht\rot@float@box\z@ + \dp\rot@float@box\z@ + \vbox to \textheight{% + \setkeys{Grot}{units=360}% + \if@rot@twoside + \def\R@@page{\pageref{RF\the\r@tfl@t}}% + \else + \let\R@@page\rot@LR + \fi + \ifthenelse{\isodd{\R@@page}}{% + \message{right hand page}% + \vfill + \hbox to\textwidth{\hfill\rotatebox{90}{\box\rot@float@box}\hfill}% + }{% + \message{left hand page}% + \hbox to \textwidth{\hfill\rotatebox{-90}{\box\rot@float@box}\hfill}% + \vfill + }% + }% + \end@dblfloat +} +\newenvironment{sidewaystable*} + {\@rotdblfloat{table}} + {\end@rotdblfloat} +\newenvironment{sidewaysfigure*} + {\@rotdblfloat{figure}} + {\end@rotdblfloat} + +\def\rotcaption{\refstepcounter\@captype\@dblarg{\@rotcaption\@captype}} +\long\def\@rotcaption#1[#2]#3{% +\addcontentsline{\csname ext@#1\endcsname}{#1}{% + \protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}% + \par + \begingroup + \@parboxrestore + \normalsize + \@makerotcaption{\csname fnum@#1\endcsname}{#3}% + \endgroup} +\long\def\@makerotcaption#1#2{% + \setbox\@tempboxa\hbox{#1: #2}% + \ifdim \wd\@tempboxa > .8\vsize + \rotatebox{90}{% + \begin{minipage}{.8\textheight}#1: #2\end{minipage}% + }\par + \else% + \rotatebox{90}{\box\@tempboxa}% + \fi + \hspace{12pt}% +} +\endinput +%% +%% End of file `rotating.sty'. diff --git a/vu-cs-standard-thesis/sections/appendix.tex b/vu-cs-standard-thesis/sections/appendix.tex new file mode 100644 index 0000000..cc471e5 --- /dev/null +++ b/vu-cs-standard-thesis/sections/appendix.tex @@ -0,0 +1,16 @@ +% this file is called up by thesis.tex +% content in this file will be fed into the main document + +%: ----------------------- name of chapter ------------------------- +\chapter*{Appendix} % top level followed by section, subsection + + + + + + + +% --------------------------------------------------------------------------- +%: ----------------------- end of thesis sub-document ------------------------ +% --------------------------------------------------------------------------- + diff --git a/vu-cs-standard-thesis/sections/background.tex b/vu-cs-standard-thesis/sections/background.tex new file mode 100644 index 0000000..03c924d --- /dev/null +++ b/vu-cs-standard-thesis/sections/background.tex @@ -0,0 +1,10 @@ +\chapter{Background}\label{s:background} + + +\todo{ +This section provides the necessary context to help the reader understand the +remainder of the thesis. +} + +\lipsum[1-8] + diff --git a/vu-cs-standard-thesis/sections/conclusion.tex b/vu-cs-standard-thesis/sections/conclusion.tex new file mode 100644 index 0000000..9ca221f --- /dev/null +++ b/vu-cs-standard-thesis/sections/conclusion.tex @@ -0,0 +1,11 @@ +\chapter{Conclusion}\label{s:conclusion} + + +\todo{ +Briefly summarize your contributions, and share a glimpse of the implications of +this work for future research. +} + + +\lipsum[1-2] + diff --git a/vu-cs-standard-thesis/sections/design.tex b/vu-cs-standard-thesis/sections/design.tex new file mode 100644 index 0000000..175ec1b --- /dev/null +++ b/vu-cs-standard-thesis/sections/design.tex @@ -0,0 +1,11 @@ +\chapter{Design}\label{s:design} + + +\todo{ +In this section, you would provide a high-level description of the system or +solution and explain your design choices. +} + + +\lipsum[1-10] + diff --git a/vu-cs-standard-thesis/sections/discussion.tex b/vu-cs-standard-thesis/sections/discussion.tex new file mode 100644 index 0000000..62129fc --- /dev/null +++ b/vu-cs-standard-thesis/sections/discussion.tex @@ -0,0 +1,10 @@ +\chapter{Discussion}\label{s:discussion} + + +\todo{ +Here you put your results in context (possibly grouped by research question). Usually, this section focuses on analyzing the +implications of the proposed work for current and future research and for practitioners. +} + + +\lipsum[1-8] diff --git a/vu-cs-standard-thesis/sections/evaluation.tex b/vu-cs-standard-thesis/sections/evaluation.tex new file mode 100644 index 0000000..3b65dff --- /dev/null +++ b/vu-cs-standard-thesis/sections/evaluation.tex @@ -0,0 +1,13 @@ +\chapter{Evaluation}\label{s:evaluation} + + +\todo{ +Discuss the design of your experiments, the results you obtained, and how they +help in evaluating the claims you made in the introduction. You may also use the +evaluation results in this section to justify your design choices or assess the +contributions of different aspects of your design towards the overall goals. +} + + +\lipsum[1-16] + diff --git a/vu-cs-standard-thesis/sections/implementation.tex b/vu-cs-standard-thesis/sections/implementation.tex new file mode 100644 index 0000000..84fb7a6 --- /dev/null +++ b/vu-cs-standard-thesis/sections/implementation.tex @@ -0,0 +1,13 @@ +\chapter{Implementation}\label{s:implementation} + + +This section presents important implementation details. + + +\lipsum[1-6] + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "../thesis" +%%% End: diff --git a/vu-cs-standard-thesis/sections/intro.tex b/vu-cs-standard-thesis/sections/intro.tex new file mode 100644 index 0000000..3eb6e09 --- /dev/null +++ b/vu-cs-standard-thesis/sections/intro.tex @@ -0,0 +1,12 @@ +\chapter{Introduction}\label{s:intro} + +\todo{ +This section includes some motivations behind the work, explicitly or implicitly +highlights the research question, provides a high-level explanation of the +solution, and describes the contributions. +} + + +\lipsum[1-2] + + diff --git a/vu-cs-standard-thesis/sections/overview.tex b/vu-cs-standard-thesis/sections/overview.tex new file mode 100644 index 0000000..869cea5 --- /dev/null +++ b/vu-cs-standard-thesis/sections/overview.tex @@ -0,0 +1,13 @@ +\chapter{Overview}\label{s:overview} + + +\todo{ +This section provides a high-level outline of the proposed system or solution. +It typically illustrates the system architecture or the interactions between the +different solution components (via a “boxes-and-arrows” diagram) from a user’s +perspective. +} + + +\lipsum[1-6] + diff --git a/vu-cs-standard-thesis/sections/related.tex b/vu-cs-standard-thesis/sections/related.tex new file mode 100644 index 0000000..7a8f517 --- /dev/null +++ b/vu-cs-standard-thesis/sections/related.tex @@ -0,0 +1,10 @@ +\chapter{Related Work}\label{s:related} + + +\todo{ +Describe here scientific papers similar to your experiment, both in terms of goal and methodology. One paragraph for each paper (we expect about 5-8 papers to be discussed). Each paragraph contains: (i) a brief description of the related paper and (ii) a black-on-white description about how your work differs from the related paper. You may place this section immediately after the Background section, if necessary. +} + + +\lipsum[14-17][4-8] + diff --git a/vu-cs-standard-thesis/sections/threats.tex b/vu-cs-standard-thesis/sections/threats.tex new file mode 100644 index 0000000..3025b7f --- /dev/null +++ b/vu-cs-standard-thesis/sections/threats.tex @@ -0,0 +1,9 @@ +\chapter{Threats To Validity}\label{sec:threats} + +\todo{Report about each type of threat to the validity of the experiment, according to the classification framework proposed by Wohlin \etal \cite{wohlin12}. +} + +\section{Internal Validity} +\section{External Validity} +\section{Construct Validity} +\section{Conclusion Validity}
\ No newline at end of file diff --git a/vu-cs-standard-thesis/setspace.sty b/vu-cs-standard-thesis/setspace.sty new file mode 100644 index 0000000..c329204 --- /dev/null +++ b/vu-cs-standard-thesis/setspace.sty @@ -0,0 +1,546 @@ +%%% ====================================================================== +%%% @LaTeX-style-file{ +%%% filename = "setspace.sty", +%%% version = "6.7", +%%% date = "Fri 1 December 2000", +%%% time = "17:49 UT+11", +%%% author = "Geoffrey Tobin", +%%% address = "Department of Electronic Engineering +%%% Faculty of Science and Technology +%%% La Trobe University +%%% Bundoora VIC 3086 +%%% Australia", +%%% email = "G.Tobin@latrobe.edu.au (Internet)", +%%% telephone = "(+ 613) 9479-3736", +%%% FAX = "(+ 613) 9479-3025", +%%% supported = "yes", +%%% archived = "CTAN", +%%% distribution = "freely redistributable", +%%% keywords = "LaTeX package, line spacing", +%%% codetable = "ISO/ASCII", +%%% checksum = "11793 546 2608 21972", +%%% docstring = "setspace.sty is a LaTeX (2e) package. +%%% Comments and bug reports welcome! +%%% +%%% This includes GDG's modification to Erica Harris' +%%% setspace.sty. The main aspects of this +%%% modification deal with the definitions of +%%% \singlespacing \onehalfspacing, and +%%% \doublespacing, (these are near the beginning of +%%% the file). Primarily, these deal with adding +%%% fontsize changes to guarantee that the new +%%% baseline is properly defined and placed into +%%% action. The extra \vskip in the definition of +%%% \singlespacing seems to make for a cleaner +%%% transition from multiple spacing back to single +%%% spacing. These did not appear warrranted for +%%% other size changes. +%%% +%%% Modified by GDG on November 1, 1992, to allow +%%% for use of New Font Selection Scheme. +%%% +%%% Modified by GDG on June 4, 1993, to correct +%%% for spacing tokens in definition of \@setsize +%%% Thanks to Kaja P. Christiansen <kaja@daimi.aau.dk> +%%% for the fix!! +%%% +%%% Modified by GDG on May 24, 1994, to change toggle +%%% definition from \selectfont to \@newbaseline. +%%% +%%% Modified by GDG on May 25, 1994, to add +%%% definition of \everydisplay -- this part of +%%% the code was apparently written by Geoffrey +%%% Tobin on Thu 23 Jan 1992 and was provided by +%%% stanton@haas.berkeley.edu (Richard Stanton). +%%% This should help with some of the awkward math +%%% placements in changing spacings. +%%% +%%% Modified by GT on 23 Jan 1996, to correct +%%% \everymath bug, first reported by Mario +%%% Wolczko <mario@cs.man.ac.uk> on 9 June 1992. +%%% +%%% Modified by GT on 23 Jan 1996, to correct +%%% usage of comment characters in macro +%%% definitions. +%%% +%%% Modified by GT on 23 Jan 1996, to update +%%% (adjusted) \@xfloat definition for LaTeX2e. +%%% Bug report was courtesy of Kay Nettle. +%%% +%%% Modified by GT on 24 Jan 1996, to update +%%% (adjusted) \@footnotetext definition for +%%% LaTeX2e, and to add an adjusted LaTeX2e +%%% \@mpfootnotext definition for minipages. +%%% Bug report was courtesy Kay Nettle. +%%% +%%% Changed by GT on 6 Feb 1996, into a LaTeX2e +%%% package. +%%% +%%% Made more package-like by GT on 14 Feb 1996, +%%% by adding standard messages. +%%% +%%% GT replaced \@normalsize by \normalsize on 28 +%%% Sep 1996. This change was successively +%%% advised by: +%%% +%%% Rowland J.~Bartlett +%%% <R.J.Bartlett@bolton.ac.uk> +%%% on Tue 6 Aug 96, +%%% +%%% Ted Stern +%%% <stern@amath.washington.edu> +%%% on Wed 7 Aug 96, +%%% +%%% Michal Jaegermann +%%% <michal@ellpspace.math.ualberta.ca> +%%% on Fri 27 Sep 96. +%%% +%%% GT: Sat 28 Sep 1996: Added call to +%%% \setspace@size in \setstretch, as suggested +%%% by David Hull <hull@cs.uiuc.edu> +%%% on Wed 24 July 1996. +%%% +%%% GT: Sat 28 Sep 1996: Pared \setspace@size +%%% mercilessly down to \@currsize, following +%%% advice given on Fri 27 Sep 1996 by Michal +%%% Jaegermann <michal@ellpspace.math.ualberta.ca>. +%%% Retained this macro for flexibility. +%%% +%%% Code rearranged by GT, Sat 28 Sep 1996, to give +%%% greater prominence to \setstretch. +%%% +%%% Also, GT changed (Sat 28 Sep 1996) many +%%% occurrences of \def to \newcommand, +%%% \renewcommand, or \newenvironment, +%%% as seemed appropriate. +%%% +%%% GT, Tue 10 Dec 1996: Following a suggestion +%%% by Ted Stern, the `single' spacing is now +%%% settable by the user. This is for slightly +%%% large fonts such as Lucida Bright. +%%% +%%% GT, Wed 11 Dec 1996: For simplicity and +%%% maintainability, call \onehalfspacing in +%%% the onehalfspace environment, and +%%% \doublespacing in the doublespace +%%% environment. +%%% +%%% GT, Wed 11 Dec 1996: Also deleted +%%% \setspace@size from \setstretch, +%%% as \@currsize suffices. +%%% +%%% Modified by Brett Presnell (BP) +%%% <presnell@maths.anu.edu.au> on 21 Mar 1998 +%%% to add nodisplayskipstretch option, which +%%% turns off the stretching of the space +%%% before and after displays, which is often +%%% excessive, particularly with doublespaced +%%% documents. Also added the +%%% setdisplayskipstretch command, which allows +%%% the user to choose by how much to stretch +%%% the space before and after displays +%%% independently from the setting of +%%% baselinestretch. This works regardless of +%%% whether the nodisplayskipstretch option is +%%% in effect. +%%% +%%% GT, Wed 15 Apr 1998: Added the singlespace* +%%% environment requested by +%%% Mark Olesen <olesen@weber.me.queensu.ca> +%%% on Sat 24 May 1997 and Wed 18 June 1997. +%%% This is reported to give improved vertical +%%% spacing around itemize and quote environments. +%%% +%%% GT, Wed 15 Apr 1998: David Hull pointed out on +%%% Fri 12 Dec 1997 that the \belowdisplayskip line +%%% in the \everydisplay was mistyped. Now fixed. +%%% +%%% GT, Thu 26 Nov 1998: Finally got round to +%%% fixing the absence of \begingroup from +%%% onehalfspace and doublespace environments. +%%% Thanks to: Bernd Schandl, Ron Smith, +%%% Himanshu Gohel, and Kevin Ruland, for bringing +%%% it to my long overdue attention. +%%% +%%% GT, Tue 27 July 1999: On Saturday 24 July +%%% 1999, Alexander L. Wolf <alw@cs.colrado.edu> +%%% informed me that the \doublespace and +%%% \onehalfspace _macros_ are still at fault. +%%% +%%% GT, Fri 3 March 2000: Today Stefano +%%% Lacaprara of Italy brought my attention to +%%% the need to extend the commands and macros +%%% to point sizes other than 10, 11 and 12. +%%% Since there's no general formula for the +%%% line stretch values in terms of point size, +%%% and they vary only slightly between 10, 11 +%%% and 12 pt, and furthermore the values were +%%% presumably optimised specifically for the +%%% Computer Modern fonts, i've chosen to use +%%% the 10 pt values as the generic defaults. +%%% +%%% GT, Fri 1 December 2000: George Pearson +%%% requested package options for the three +%%% common spacings. +%%% +%%% The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility." +%%% } +%%% ====================================================================== +%% FILE: setspace.sty in SYS2.TEX.PUB.ISULATEX.STYLES +%% AUTHOR: Erica M. S. Harris +%% DATE: April 1990 +%% MOD: March 1991 +%%% +%%% Update to LaTeX (2e) : 6 Feb 1996. +%%% Description: LaTeX Document Package "setspace" +%%% +%%% Usage: +%%% \documentclass[...]{...} +%%% \usepackage{setspace} +%%% +%% Based on the doublespace option created by Stephen Page. +%% +%% This style option provides commands and environments for doing +%% double and one-and-a-half spacing based on pt size. +%% +%% Single spacing is the default. +%% +%% Three commands, \singlespacing, \onehalfspacing, and +%% \doublespacing, are for use in the preamble to set the overall +%% spacing for the document. If a different spacing is required then +%% the \setstretch{baselinestretch} command can be used in the +%% preamble to set the baselinestretch appropriately. The default +%% spacing with this style option is single spacing. +%% +%% Three environments, singlespace, onehalfspace, and doublespace, +%% allow the spacing to be changed within the document. Both the +%% onehalfspace and doublespace environments are intended to increase +%% the spacing, so the onehalfspace environment should not be used in +%% a double spaced document. If an increased spacing different from +%% one-and-a-half or double spacing is required then the spacing +%% environment can be used. The spacing environment takes one +%% argument which is the larger baselinestretch to use, +%% e.g., \begin{spacing}{2.5}. +%% +%% \footins is adjusted the same as \parskip - appears to work. Lose +%% stretch parts but don't consider that to be crucial +%% +%% Removed code for altering spacing before and after displayed +%% equations - just looked too much. +%% +%% MODS: +%% Redefinition of \spacing and \endspacing for consistency with +%% TeX 3.x inserted by George Greenwade. Modification provided by +%% Philip Ross (ROSS@UK.AC.ABDN.BIOMED) and John Byrne via INFO-TeX. +%% +%% PLEASE REPORT ANY BUGS +%% +%% Old Documentation follows: +%% 1. A new environment "singlespace" is provided, within which single +%% spacing will apply. +%% JFL - changed so that it works in regular text and so that +%% vertical space before and after is correctly computed +%% 2. Double spacing is turned off within footnotes and floats (figures +%% and tables). +%% 3. Proper double spacing happens below tabular environments and in +%% other places where LaTeX uses a strut. +%% 4. Slightly more space is inserted before footnotes. +%% 5. JFL - fixes spacing before and after displayed math +%% +%% +%% mods: Jean-Francois Lamy +%% lamy@ai.toronto.edu +%% lamy@utai.uucp +%% +%% POSSIBLE BUGS: +%% . Increasing struts may possibly cause some other obscure part of +%% formatting to fall over. +%% . \begin{singlespace}\begin{quote} produces the wrong spacing before +%% the quote (extra glue is inserted). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat {LaTeX2e}[1994/12/01] +\def \filename {setspace.sty} +\def \filedate {2000/12/01} +\def \fileversion {6.7} +\ProvidesPackage {setspace}[\filedate\space\fileversion\space + Contributed and Supported LaTeX2e package] +\typeout {Package: `setspace' \fileversion\space <\filedate>} + +% BP: add nodisplayskipstretch option and \setdisplayskipstretch command. + +\newcommand{\displayskipstretch}{\baselinestretch} +\newcommand{\setdisplayskipstretch}[1]{\renewcommand{\displayskipstretch}{#1}} +\DeclareOption{nodisplayskipstretch}{\setdisplayskipstretch{1.0}} + +% GT: add George Pearsons' suggested options. + +\DeclareOption{singlespacing}{\AtEndOfPackage{\singlespacing}} +\DeclareOption{onehalfspacing}{\AtEndOfPackage{\onehalfspacing}} +\DeclareOption{doublespacing}{\AtEndOfPackage{\doublespacing}} + +\ProcessOptions + +% GT: Sat 28 Sep 1996: Widely using \newcommand, \renewcommand, and +% \newenvironment, instead of \def. + +% ** Line space commands. + +\newcommand{\setstretch}[1]{% + \def\baselinestretch{#1}% + \@currsize +} + +% GT: Sat 28 Sep 1996: spacing commands and environments modified to +% use \setstretch instead of \baselinestretch. +% +% GT: Sat 28 Sep 1996: No, I don't know understand the line spacing +% algorithms! If someone (LaTeX team) can enlighten me as to the +% general rule, please do! It would be very pleasant if setspace.sty +% were suited for document font sizes other than 10, 11 and 12 pt. +% +% GT: Tue 10 Dec 1996: Instead of fixing singlespacing to exact unity, +% allow user to redefine it (only slightly, please!) from its initial +% value of unity, in the case when a particular font is slightly larger +% or slightly smaller than its point size would indicate. This change +% affects setspace's single spacing commands, and LaTeX's footnote and +% float environments. The one and a half, double, and arbitrary +% spacing commands are unaltered. + +\newcommand{\SetSinglespace}[1]{% + \def\setspace@singlespace{#1}% +} + +% Here's the default single line spacing value. +\SetSinglespace{1} + +\newcommand{\singlespacing}{% + \setstretch {\setspace@singlespace}% normally 1 + \vskip \baselineskip % Correction for coming into singlespace +} + +\newcommand{\onehalfspacing}{% + \setstretch{1.25}% default + \ifcase \@ptsize \relax % 10pt + \setstretch {1.25}% + \or % 11pt + \setstretch {1.213}% + \or % 12pt + \setstretch {1.241}% + \fi +} + +\newcommand{\doublespacing}{% + \setstretch {1.667}% default + \ifcase \@ptsize \relax % 10pt + \setstretch {1.667}% + \or % 11pt + \setstretch {1.618}% + \or % 12pt + \setstretch {1.655}% + \fi +} + +% ** Modification of the LaTeX command \@setsize. + +%---Stretch the baseline BEFORE calculating the strut size. This improves +% spacing below tabular environments etc., probably... +% Comments are welcomed. + +% GT: Sun 29 Sep 1996: Question: Is this code anywhere near correct +% since this part of LaTeX (in, eg, latex.ltx) has been greatly changed? + +% GT: Sun 29 Sep 1996: The meanings of the arguments to \@setsize +% appear to be (whatever these may signify) : +% current size; font baselineskip; ignored (!); and font size. + +% GT: Sun 29 Sep 1996: Note that \@setsize (in latest LaTeX, +% \@setfontsize, which is called by \@setsize) seems to be the only +% place in purely modern LaTeX where \@currsize is set, and ltxguide.cls +% seems to be the only file in the LaTeX base distribution that uses it! + +\def\@setsize#1#2#3#4{% + % Modified 1993.04.07--GDG per KPC + \@nomath#1% + \let\@currsize#1% + \baselineskip #2% + \baselineskip \baselinestretch\baselineskip + \parskip \baselinestretch\parskip + \setbox\strutbox \hbox{% + \vrule height.7\baselineskip + depth.3\baselineskip + width\z@}% + \skip\footins \baselinestretch\skip\footins + \normalbaselineskip\baselineskip#3#4} + +% ** Float and footnote adjustments to compensate for a change in the +% ** main text's line spacing. + +%---Increase the space between last line of text and footnote rule. +%\skip\footins 20pt plus4pt minus4pt + +%---Reset baselinestretch within floats and footnotes. + +% GT: Tue 23 Jan 1996: This is where the conflict with the combination +% of the color package and the figure environment used to occur. + +% Floats. + +% GT: Sat 28 Sep 1996: \@xfloat is the only place where \normalsize +% is still used in setspace.sty ! + +\let\latex@xfloat=\@xfloat +\def\@xfloat #1[#2]{% + \latex@xfloat #1[#2]% + \def\baselinestretch{\setspace@singlespace}% + \normalsize +} + +% GT: Wed 24 Jan 1996: This footnote code was copied from LaTeX and +% modified rather naively. It had to be brought up to date, not only +% because of LaTeX's new color ability, but also because ther had +% been major changes to this code in LaTeX at least as far back as +% March 1992. + +% Normal, bottom of the page, footnotes. +% +% GT: Based HEAVILY on original LaTeX (2e) code. A standard hook would +% be MUCH preferred, so that LaTeX's footnote implementation needn't be +% copied each time it changes. +% +% GT: The \protected@edef requires at least the December 1994 LaTeX. +% This is precisely the kind of VERSION DEPENDENCY situation that +% cannot (AFAIK) be avoided, because LaTeX (2e) LACKS appropriate +% standard hooks and/or context markers. + +\long\def\@footnotetext#1{% + \insert\footins{% +% GT: Next line added. Hook desired here! + \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}} + +% Minipage footnotes. + +\long\def\@mpfootnotetext#1{% + \global\setbox\@mpfootins\vbox{% + \unvbox \@mpfootins +% GT: Next line added. Hook desired here! + \def\baselinestretch {\setspace@singlespace}% + \reset@font\footnotesize + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel{% + \csname p@mpfootnote\endcsname\@thefnmark}% + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \color@endgroup}} + +% ** Line space environments. + +% A single spaced quote (say) is done by surrounding singlespace with quote. + +\newenvironment{singlespace}{% + \vskip \baselineskip + \setstretch {\setspace@singlespace}% + \vskip -\baselineskip +}{% + \par +} + +% GT (c/o Mark Olesen), Wed 15 April 1998. + +\newenvironment{singlespace*}{% + \setstretch {\setspace@singlespace}% + \vskip -\baselineskip +}{% + \vskip -0.5\baselineskip +} + +% spacing, doublespace and onehalfspace all are meant to INCREASE the +% spacing (i.e. calling onehalfspace from within doublespace will not +% produce a graceful transition between spacings) +% +% Next two definitions fixed for consistency with TeX 3.x + +% In order to use \newenvironment, while easily using same code for +% end of each environment, the code that used to be in \endspacing has +% been moved into a new (but internal) macro, \restore@spacing. + +\newcommand{\restore@spacing}{% + \par + \vskip \parskip + \vskip \baselineskip + \endgroup + \vskip -\parskip + \vskip -\baselineskip +} + +\newenvironment{spacing}[1]{% + \par + \begingroup % moved from \endspacing by PGBR 29-1-91 + \setstretch {#1}% +}{% + \restore@spacing +} + +% one and a half spacing is 1.5 x pt size +\newenvironment{onehalfspace}{% + \begingroup + \onehalfspacing +}{% + \restore@spacing +} + +% double spacing is 2 x pt size +\newenvironment{doublespace}{% + \begingroup + \doublespacing +}{% + \restore@spacing +} + +% GT: EMSH chose to omit display math part that follows. +% She wrote (see above) that the "altered spacing before and after displayed +% equations ... just looked too much". +% +% Fix up spacing before and after displayed math +% (arraystretch seems to do a fine job for inside LaTeX displayed math, +% since array and eqnarray seem to be affected as expected). +% Changing \baselinestretch and doing a font change also works if done here, +% but then you have to change @setsize to remove the call to @nomath) +% +% GT: The \belowdisplayskip line was mistyped; now fixed, courtesy of +% David Hull. +% +% GT: Brett Parnell has addressed EMSH's concern by replacing +% \baselinestretch by \displayskipstretch in displays, as follows. + +\everydisplay\expandafter{% + \the\everydisplay + \abovedisplayskip \displayskipstretch\abovedisplayskip + \belowdisplayskip \displayskipstretch\belowdisplayskip + \abovedisplayshortskip \displayskipstretch\abovedisplayshortskip + \belowdisplayshortskip \displayskipstretch\belowdisplayshortskip +} + +\endinput + +%%% EOF. diff --git a/vu-cs-standard-thesis/subfigure.sty b/vu-cs-standard-thesis/subfigure.sty new file mode 100644 index 0000000..64a368d --- /dev/null +++ b/vu-cs-standard-thesis/subfigure.sty @@ -0,0 +1,218 @@ +%% +%% This is file `subfigure.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% subfigure.dtx (with options: `package') +%% +%% Copyright (C) 1988-1995 Steven Douglas Cochran. +%% +%% This file is NOT the source for subfigure, because almost all comments +%% have been stripped from it. It is NOT the preferred form of subfigure +%% for making modifications to it. +%% +%% Therefore you can NOT redistribute and/or modify THIS file. You can +%% however redistribute the complete source (subfigure.dtx and +%% subfigure.ins) and/or modify it under the terms of the GNU General +%% Public License as published by the Free Software Foundation; either +%% version 2, or (at your option) any later version. +%% +%% The subfigure package 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., 675 Mass Ave, Cambridge, MA 02139, USA. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% @LaTeX-style-file{ +%% Author = "Steven Douglas Cochran", +%% Version = "2.0", +%% Date = "1995/03/06", +%% Time = "14:43:14", +%% Filename = "subfigure.sty", +%% Address = "Digital Mapping Laboratory, School of Computer Science +%% Carnegie-Mellon University, 5000 Forbes Avenue +%% Pittsburgh, PA 15213-3891, USA", +%% Telephone = "(412) 268-5654", +%% FAX = "(412) 268-5576", +%% Email = "sdc+@CS.CMU.EDU (Internet)", +%% CodeTable = "ISO/ASCII", +%% Keywords = "LaTeX2e, float, figure, table", +%% Supported = "yes", +%% Abstract = "LaTeX package for providing support for the +%% inclusion of small, `sub,' figures and tables. It +%% simplifies the positioning, captioning and +%% labeling of them within a single figure or table +%% environment. In addition, this package allows +%% such sub-captions to be written to the List of +%% Figures or List of Tables if desired." +%% } +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ifx\if@compatibility\undefined\else + \NeedsTeXFormat{LaTeX2e} + \ProvidesPackage{subfigure}[1995/03/06 v2.0 subfigure package] + \typeout{Package: subfigure 1995/03/06 v2.0} +\fi +\newif\ifsubcaphang +\newif\ifsubcapcenter +\newif\ifsubcapcenterlast +\newif\ifsubcapnooneline +\newcommand{\subfigtopskip}{10pt} +\newcommand{\subfigbottomskip}{10pt} +\newcommand{\subfigcapskip}{10pt} +\newcommand{\subfigcapmargin}{10pt} +\newcommand{\subcapsize}{} +\newcommand{\subcaplabelfont}{} +\newcounter{subfigure}[figure] +\def\thesubfigure{(\alph{subfigure})} +\newcommand{\@thesubfigure}{{\subcaplabelfont\thesubfigure}\space} +\let\p@subfigure\thefigure +\let\ext@subfigure\ext@figure +\newcommand{\l@subfigure}{% + \@dottedxxxline{\ext@subfigure}{2}{3.9em}{2.3em}} +\newcounter{lofdepth} +\setcounter{lofdepth}{1} +\newcounter{subtable}[table] +\def\thesubtable{(\alph{subtable})} +\newcommand{\@thesubtable}{{\subcaplabelfont\thesubtable}\space} +\let\p@subtable\thetable +\let\ext@subtable\ext@table +\newcommand{\l@subtable}{% + \@dottedxxxline{\ext@subtable}{2}{3.9em}{2.3em}} +\newcounter{lotdepth} +\setcounter{lotdepth}{1} +\ifx\if@compatibility\undefined + \subcaphangfalse + \subcapcenterfalse + \subcapcenterlastfalse + \def\subcapsize{\footnotesize} +\else + \DeclareOption{normal}{% + \subcaphangfalse + \subcapcenterfalse + \subcapcenterlastfalse + \subcapnoonelinefalse} + \DeclareOption{hang}{\subcaphangtrue} + \DeclareOption{center}{\subcapcentertrue} + \DeclareOption{centerlast}{\subcapcenterlasttrue} + \DeclareOption{nooneline}{\subcapnoonelinetrue} + \DeclareOption{isu}{\ExecuteOption{hang}} + \DeclareOption{anne}{\ExecuteOption{centerlast}} + \DeclareOption{scriptsize}{\renewcommand{\subcapsize}{\scriptsize}} + \DeclareOption{footnotesize}{\renewcommand{\subcapsize}{\footnotesize}} + \DeclareOption{small}{\renewcommand{\subcapsize}{\small}} + \DeclareOption{normalsize}{\renewcommand{\subcapsize}{\normalsize}} + \DeclareOption{large}{\renewcommand{\subcapsize}{\large}} + \DeclareOption{Large}{\renewcommand{\subcapsize}{\Large}} + \DeclareOption{up}{\renewcommand{\subcaplabelfont}{\upshape}} + \DeclareOption{it}{\renewcommand{\subcaplabelfont}{\itshape}} + \DeclareOption{sl}{\renewcommand{\subcaplabelfont}{\slshape}} + \DeclareOption{sc}{\renewcommand{\subcaplabelfont}{\scshape}} + \DeclareOption{md}{\renewcommand{\subcaplabelfont}{\mdseries}} + \DeclareOption{bf}{\renewcommand{\subcaplabelfont}{\bfseries}} + \DeclareOption{rm}{\renewcommand{\subcaplabelfont}{\rmfamily}} + \DeclareOption{sf}{\renewcommand{\subcaplabelfont}{\sffamily}} + \DeclareOption{tt}{\renewcommand{\subcaplabelfont}{\ttfamily}} + \ExecuteOptions{normal,footnotesize} + \ProcessOptions +\fi +\newcommand{\subfigure}{% + \bgroup + \advance\csname c@\@captype\endcsname\@ne + \refstepcounter{sub\@captype}% + \leavevmode + \@ifnextchar [% + {\@subfloat{sub\@captype}}% + {\@subfloat{sub\@captype}[\@empty]}} +\let\subtable\subfigure +\def\@subfloat#1[#2]#3{% + \setbox\@tempboxa \hbox{#3}% + \@tempdima=\wd\@tempboxa + \vtop{% + \vbox{ + \vskip\subfigtopskip + \box\@tempboxa}% + \ifx \@empty#2\relax \else + \vskip\subfigcapskip + \@subcaption{#1}{#2}% + \fi + \vskip\subfigbottomskip}% + \egroup} +\newcommand{\@subfigcaptionlist}{} +\newcommand{\@subcaption}[2]{% + \begingroup + \let\label\@gobble + \def\protect{\string\string\string}% + \xdef\@subfigcaptionlist{% + \@subfigcaptionlist,% + {\protect\numberline {\@currentlabel}% + \noexpand{\ignorespaces #2}}}% + \endgroup + \@nameuse{@make#1caption}{\@nameuse{@the#1}}{#2}} +\newcommand{\@makesubfigurecaption}[2]{% + \setbox\@tempboxa \hbox{% + \subcapsize + \ignorespaces #1% + \ignorespaces #2}% + \@tempdimb=-\subfigcapmargin + \multiply\@tempdimb\tw@ + \advance\@tempdimb\@tempdima + \hbox to\@tempdima{% + \hfil + \ifdim \wd\@tempboxa >\@tempdimb + \subfig@caption{#1}{#2}% + \else\ifsubcapnooneline + \subfig@caption{#1}{#2}% + \else + \box\@tempboxa + \fi\fi + \hfil}} +\let\@makesubtablecaption\@makesubfigurecaption +\newcommand{\subfig@caption}[2]{% + \ifsubcaphang + \sbox{\@tempboxa}{% + \subcapsize + \ignorespaces #1}% + \addtolength{\@tempdimb}{-\wd\@tempboxa}% + \usebox{\@tempboxa}% + \subfig@captionpar{\@tempdimb}{#2}% + \else + \subfig@captionpar{\@tempdimb}{#1#2}% + \fi} +\newcommand{\subfig@captionpar}[2]{% + \parbox[t]{#1}{% + \strut + \ifsubcapcenter + \setlength{\leftskip}{\@flushglue}% + \setlength{\rightskip}{\@flushglue}% + \setlength{\parfillskip}{\z@skip}% + \else\ifsubcapcenterlast + \addtolength{\leftskip}{0pt plus 1fil}% + \addtolength{\rightskip}{0pt plus -1fil}% + \setlength{\parfillskip}{0pt plus 2fil}% + \fi\fi + \subcapsize + \ignorespaces #2% + \par}} +\newcommand{\@dottedxxxline}[6]{% + \ifnum #2>\@nameuse{c@#1depth}\else + \@dottedtocline{0}{#3}{#4}{#5}{#6} + \fi} +\let\subfig@oldcaption\@caption +\long\def\@caption#1[#2]#3{% + \subfig@oldcaption{#1}[{#2}]{#3}% + \@for \@tempa:=\@subfigcaptionlist \do {% + \ifx\@empty\@tempa\relax \else + \addcontentsline + {\@nameuse{ext@sub#1}}% + {sub#1}% + {\@tempa}% + \fi}% + \gdef\@subfigcaptionlist{}} +\endinput +%% +%% End of file `subfigure.sty'. diff --git a/vu-cs-standard-thesis/thesis.tex b/vu-cs-standard-thesis/thesis.tex new file mode 100644 index 0000000..771c993 --- /dev/null +++ b/vu-cs-standard-thesis/thesis.tex @@ -0,0 +1,293 @@ + +% ---------------------------------------------------------------------- +% LATEX TEMPLATE FOR PhD THESIS +% ---------------------------------------------------------------------- + +% based on Harish Bhanderi's PhD/MPhil template, then Uni Cambridge +% http://www-h.eng.cam.ac.uk/help/tpl/textprocessing/ThesisStyle/ +% corrected and extended in 2007 by Jakob Suckale, then MPI-CBG PhD programme +% and made available through OpenWetWare.org - the free biology wiki + + +%: Style file for Latex +% Most style definitions are in the external file PhDthesisPSnPDF. +% In this template package, it can be found in ./Latex/Classes/ +\documentclass[twoside,11pt]{Latex/Classes/PhDthesisPSnPDF} + + +%: Macro file for Latex +% Macros help you summarise frequently repeated Latex commands. +% Here, they are placed in an external file /Latex/Macros/MacroFile1.tex +% An macro that you may use frequently is the figuremacro (see introduction.tex) +% \include{Latex/Macros/MacroFile1} +\usepackage[T1]{fontenc} +\usepackage{array} +\usepackage{pdfpages} +\usepackage{xspace} +\usepackage{xcolor} +\usepackage{lipsum} + +%\usepackage{graphics} +% or use the graphicx package for more complicated commands +%\usepackage{graphicx} + +%: ---------------------------------------------------------------------- +%: TITLE PAGE: name, degree,.. +% ---------------------------------------------------------------------- +\usepackage{graphicx} + + \textwidth 15cm + \textheight 22cm + \parindent 10pt + \oddsidemargin 0.85cm + \evensidemargin 0.37cm + +\newcommand{\ie}{\emph{i.e.,}\xspace} +\newcommand{\eg}{\emph{e.g.,}\xspace} +\newcommand{\etc}{etc.\xspace} +\newcommand{\etal}{\emph{et~al.}\xspace} + +\newcommand{\todo}[1]{\textcolor{blue}{#1}} + +\begin{document} + +\thispagestyle{empty} + +\begin{center} + +Vrije Universiteit Amsterdam \hspace*{2cm} Universiteit van Amsterdam + +\vspace{1mm} + +\hspace*{-6.5cm}\includegraphics[height=20mm]{0_frontmatter/figures/vu-griffioen.pdf} + +\vspace*{-2cm}\hspace*{7.5cm}\includegraphics[height=15mm]{0_frontmatter/figures/uva_logo.jpg} + +\vspace{2cm} + +{\Large Master Thesis} + +\vspace*{1.5cm} + +\rule{.9\linewidth}{.6pt}\\[0.4cm] +{\huge \bfseries Title of the Thesis\par}\vspace{0.4cm} +\rule{.9\linewidth}{.6pt}\\[1.5cm] + +\vspace*{2mm} + +{\Large +\begin{tabular}{l} +{\bf Author:} ~~student name ~~~~ (student number) +\end{tabular} +} + +\vspace*{2cm} + +\begin{tabular}{ll} +{\it 1st supervisor:} & ~~supervisor name \\ +{\it daily supervisor:} & ~~supervisor name ~~~~ (company, if applicable) \\ +{\it 2nd reader:} & ~~supervisor name +\end{tabular} + +\vspace*{2.5cm} + +\textit{A thesis submitted in fulfillment of the requirements for\\ the joint UvA-VU Master of Science degree in Computer Science} + +\vspace*{1.8cm} + +\today\\[4cm] % Date + +\end{center} + +\newpage + + +% ---------------------------------------------------------------------- + +% turn of those nasty overfull and underfull hboxes +\hbadness=10000 +\hfuzz=50pt + + +%: -------------------------------------------------------------- +%: FRONT MATTER: dedications, abstract,.. +% -------------------------------------------------------------- + + +%\language{english} + + +% sets line spacing +\renewcommand\baselinestretch{1.2} +\baselineskip=18pt plus1pt + + +%: ----------------------- generate cover page ------------------------ + +\begin{center} +\textit{``I am the master of my fate, I am the captain of my soul'' \\ from {\em Invictus}, by William Ernest Henley} +\end{center} + +%: ----------------------- cover page back side ------------------------ +% Your research institution may require reviewer names, etc. +% This cover back side is required by Dresden Med Fac; uncomment if needed. + +\newpage +%\vspace{10mm} +%1. First Reader: Name Surname +% +%\vspace{10mm} +%2. Daily Supervisor: Name Surname +% +%\vspace{10mm} +%3. Second Reader: Name Surname +% +%\vspace{10mm} +%4. Industrial Supervisor: Name Surname +% +%\vspace{20mm} +%Day of the defense: + +%\vspace{20mm} +%\hspace{70mm}Signature from head of PhD committee: + + + +%: ----------------------- abstract ------------------------ + +% Your institution may have specific regulations if you need an abstract and where it is to be placed in the document. The default here is just after title. + +\include{0_frontmatter/abstract} + +% The original template provides and abstractseparate environment, if your institution requires them to be separate. I think it's easier to print the abstract from the complete thesis by restricting printing to the relevant page. +% \begin{abstractseparate} +% \input{Abstract/abstract} +% \end{abstractseparate} + + +%: ----------------------- tie in front matter ------------------------ + +\frontmatter +\include{0_frontmatter/dedication} +\include{0_frontmatter/acknowledgement} + + +%: ----------------------- contents ------------------------ + +\setcounter{secnumdepth}{3} % organisational level that receives a numbers +\setcounter{tocdepth}{3} % print table of contents for level 3 +\tableofcontents % print the table of contents +% levels are: 0 - chapter, 1 - section, 2 - subsection, 3 - subsection + + +%: ----------------------- list of figures/tables ------------------------ + +\listoffigures % print list of figures + +\listoftables % print list of tables + + + + +%: ----------------------- glossary ------------------------ + +% Tie in external source file for definitions: /0_frontmatter/glossary.tex +% Glossary entries can also be defined in the main text. See glossary.tex +% +%\include{0_frontmatter/glossary} + +%\begin{multicols}{2} % \begin{multicols}{#columns}[header text][space] +%\begin{footnotesize} % scriptsize(7) < footnotesize(8) < small (9) < normal (10) + +%\printnomenclature[1.5cm] % [] = distance between entry and description +%\label{nom} % target name for links to glossary + +%\end{footnotesize} +%\end{multicols} + + + +%: -------------------------------------------------------------- +%: MAIN DOCUMENT SECTION +% -------------------------------------------------------------- + +% the main text starts here with the introduction, 1st chapter,... +\mainmatter + +\renewcommand{\chaptername}{} % uncomment to print only "1" not "Chapter 1" + + +%: ----------------------- subdocuments ------------------------ + +% Parts of the thesis are included below. Rename the files as required. +% But take care that the paths match. You can also change the order of appearance by moving the include commands. + +\input{sections/intro} +\input{sections/background} +\input{sections/overview} +\input{sections/design} +\input{sections/evaluation} +\input{sections/discussion} +\input{sections/threats} +\input{sections/related} +\input{sections/conclusion} + + +% -------------------------------------------------------------- +%: BACK MATTER: appendices, refs,.. +% -------------------------------------------------------------- + +% the back matter: appendix and references close the thesis + + +%: ----------------------- bibliography ------------------------ + +% The section below defines how references are listed and formatted +% The default below is 2 columns, small font, complete author names. +% Entries are also linked back to the page number in the text and to external URL if provided in the BibTex file. + +% PhDbiblio-url2 = names small caps, title bold & hyperlinked, link to page +%\begin{multicols}{2} % \begin{multicols}{ # columns}[ header text][ space] +%\begin{tiny} % tiny(5) < scriptsize(7) < footnotesize(8) < small (9) + +\bibliographystyle{Latex/Classes/PhDbiblio-url2} % Title is link if provided +\renewcommand{\bibname}{References} % changes the header; default: Bibliography + +\bibliography{references} % adjust this to fit your BibTex file + +\include{sections/appendix} + +%\end{tiny} +%\end{multicols} + + + +% -------------------------------------------------------------- +% Various bibliography styles exit. Replace above style as desired. + +% in-text refs: (1) (1; 2) +% ref list: alphabetical; author(s) in small caps; initials last name; page(s) +%\bibliographystyle{Latex/Classes/PhDbiblio-case} % title forced lower case +%\bibliographystyle{Latex/Classes/PhDbiblio-bold} % title as in bibtex but bold +%\bibliographystyle{Latex/Classes/PhDbiblio-url} % bold + www link if provided + +%\bibliographystyle{Latex/Classes/jmb} % calls style file jmb.bst +% in-text refs: author (year) without brackets +% ref list: alphabetical; author(s) in normal font; last name, initials; page(s) + +%\bibliographystyle{plainnat} % calls style file plainnat.bst +% in-text refs: author (year) without brackets +% (this works with package natbib) + + +% -------------------------------------------------------------- + +% according to Dresden med fac summary has to be at the end +%\include{0_frontmatter/abstract} + +%: Declaration of originality +%\include{8_backmatter/declaration} + + + +\end{document} diff --git a/vu-cs-standard-thesis/tocbibind.sty b/vu-cs-standard-thesis/tocbibind.sty new file mode 100644 index 0000000..ce60fb4 --- /dev/null +++ b/vu-cs-standard-thesis/tocbibind.sty @@ -0,0 +1,328 @@ +%% +%% This is file `tocbibind.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tocbibind.dtx (with options: `usc') +%% +%% Copyright 1998, 1999 Peter R. Wilson +%% +%% This program is provided under the terms of the +%% LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +%% Author: Peter Wilson (CUA and NIST) +%% now at: peter.r.wilson@boeing.com +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{tocbibind}[2003/02/04 v1.5f extra ToC listings] + +\providecommand{\PRWPackageNote}[2]{% + \GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces + }{% + Package #1 Note: #2% + }% +} +\providecommand{\PRWPackageNoteNoLine}[2]{% + \PRWPackageNote{#1}{#2\@gobble}% +} + +\newcommand{\@bibquit}{} +\newif\if@bibchapter +\@ifundefined{chapter}{% + \@bibchapterfalse + \@ifundefined{section}{% + \PackageWarning{tocbibind}% + {I don't recognize any sectional divisions.\MessageBreak + I hope you have used the `other' option\MessageBreak + otherwise I'll ignore the package} + \renewcommand{\@bibquit}{\endinput} + }{\PRWPackageNoteNoLine{tocbibind}{The document has section divisions}} + }{\@bibchaptertrue + \PRWPackageNoteNoLine{tocbibind}{The document has chapter divisions}} + +\newif\if@inltxdoc +\@ifclassloaded{ltxdoc}{\@inltxdoctrue}{\@inltxdocfalse} + +\newif\if@dotocbib\@dotocbibtrue +\newif\if@dotocind\@dotocindtrue +\newif\if@dotoctoc\@dotoctoctrue +\newif\if@dotoclot\@dotoclottrue +\newif\if@dotoclof\@dotocloftrue + +\newif\if@donumbib\@donumbibfalse +\newif\if@donumindex\@donumindexfalse +\newif\if@dot@cb@bsection\@dot@cb@bsectionfalse + +\DeclareOption{section}{\@bibchapterfalse} +\DeclareOption{notbib}{\@dotocbibfalse} +\DeclareOption{notindex}{\@dotocindfalse} +\DeclareOption{nottoc}{\@dotoctocfalse} +\DeclareOption{notlot}{\@dotoclotfalse} +\DeclareOption{notlof}{\@dotocloffalse} +\DeclareOption{numbib}{\@donumbibtrue} +\DeclareOption{numindex}{\@donumindextrue} + +\DeclareOption{chapter}{% + \if@bibchapter\else + \PackageWarning{tocbibind}% + {Chapters are undefined, using section instead} + \fi} + +\DeclareOption{other}{\renewcommand{\@bibquit}{} + \@bibchapterfalse} +\DeclareOption{none}{% + \@dotocbibfalse + \@dotocindfalse + \@dotoctocfalse + \@dotoclotfalse + \@dotocloffalse + \@donumbibfalse + \@donumindexfalse +} +\ProcessOptions\relax +\@bibquit + +\if@bibchapter + \PRWPackageNoteNoLine{tocbibind}{Using chapter style headings, unless overridden} +\else + \PRWPackageNoteNoLine{tocbibind}{Using section or other style headings} +\fi +\if@inltxdoc \@dotocindfalse \fi + +\newcommand{\@tocextra}{section} +\newcommand{\tocotherhead}[1]{\renewcommand{\@tocextra}{#1}} + +\providecommand{\phantomsection}{} + +\newcommand{\tocetcmark}[1]{% + \@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}} +\newcommand{\prw@mkboth}[1]{\tocetcmark{#1}} + +\newcommand{\toc@section}[2]{% + \@nameuse{#1}*{#2\prw@mkboth{#2}} + \phantomsection + \addcontentsline{toc}{#1}{#2}} + +\newcommand{\toc@headstar}[2]{% + \@nameuse{#1}*{{#2}}} + +\newcommand{\toc@chapter}[1]{% + \chapter*{#1\prw@mkboth{#1}} + \phantomsection + \addcontentsline{toc}{chapter}{#1}} + +\ifx\bibname\undefined + \ifx\refname\undefined + \newcommand{\tocbibname}{References} + \else + \newcommand{\tocbibname}{\refname} + \fi +\else + \newcommand{\tocbibname}{\bibname} +\fi + +\providecommand{\indexname}{Index} +\newcommand{\setindexname}[1]{\renewcommand{\indexname}{#1}} +\providecommand{\contentsname}{Contents} +\newcommand{\settocname}[1]{\renewcommand{\contentsname}{#1}} +\providecommand{\listtablename}{List of Tables} +\newcommand{\setlotname}[1]{\renewcommand{\listtablename}{#1}} +\providecommand{\listfigurename}{List of Figures} +\newcommand{\setlofname}[1]{\renewcommand{\listfigurename}{#1}} +\newcommand{\settocbibname}[1]{\renewcommand{\tocbibname}{#1}} + +\newcommand{\t@cb@bchapsec}{% + \if@bibchapter + \if@donumbib + \chapter{\tocbibname}% + \else + \toc@chapter{\tocbibname}% + \fi + \else + \if@donumbib + \@nameuse{\@tocextra}{\tocbibname}% + \else + \toc@section{\@tocextra}{\tocbibname}% + \fi + \fi} +\newcommand{\t@cb@bsection}{% + \if@donumbib + \@nameuse{\@tocextra}{\tocbibname}% + \else + \toc@section{\@tocextra}{\tocbibname}% + \fi} + +\if@dotocbib + \@ifpackageloaded{natbib}{}{% natbib not loaded + \newcommand{\bibsection}{\t@cb@bchapsec} + \renewenvironment{thebibliography}[1]{% + \bibsection + \begin{thebibitemlist}{#1}}{\end{thebibitemlist}}} + \newenvironment{thebibitemlist}[1]{ + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} + + \@ifpackagewith{chapterbib}{sectionbib}% + {\renewcommand{\sectionbib}[2]{}}% + {} + +\fi + +\AtBeginDocument{% + \@ifpackagewith{natbib}{sectionbib}{\@dot@cb@bsectiontrue}{} + \@ifpackagewith{chapterbib}{sectionbib}% + {\@dot@cb@bsectiontrue + \@ifundefined{sectionbib}{}{\def\sectionbib#1#2{}}}% + {} + + \if@dotocbib + \if@dot@cb@bsection + \renewcommand{\bibsection}{\t@cb@bsection}% + \else + \renewcommand{\bibsection}{\t@cb@bchapsec}% + \fi + \fi +} + +\if@inltxdoc\else + \renewenvironment{theindex}% + {\if@twocolumn + \@restonecolfalse + \else + \@restonecoltrue + \fi + \if@bibchapter + \if@donumindex + \refstepcounter{chapter} + \twocolumn[\vspace*{2\topskip}% + \@makechapterhead{\indexname}]% + \phantomsection + \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}\indexname} + \chaptermark{\indexname} + \else + \if@dotocind + \twocolumn[\vspace*{2\topskip}% + \@makeschapterhead{\indexname}]% + \prw@mkboth{\indexname} + \phantomsection + \addcontentsline{toc}{chapter}{\indexname} + \else + \twocolumn[\vspace*{2\topskip}% + \@makeschapterhead{\indexname}]% + \prw@mkboth{\indexname} + \fi + \fi + \else + \if@donumindex + \twocolumn[\vspace*{-1.5\topskip}% + \@nameuse{\@tocextra}{\indexname}]% + \csname \@tocextra mark\endcsname{\indexname} + \else + \if@dotocind + \twocolumn[\vspace*{-1.5\topskip}% + \toc@headstar{\@tocextra}{\indexname}]% + \prw@mkboth{\indexname} + \phantomsection + \addcontentsline{toc}{\@tocextra}{\indexname} + \else + \twocolumn[\vspace*{-1.5\topskip}% + \toc@headstar{\@tocextra}{\indexname}]% + \prw@mkboth{\indexname} + \fi + \fi + \fi + \thispagestyle{plain}\parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \let\item\@idxitem} + {\if@restonecol\onecolumn\else\clearpage\fi} +\fi + +\newcommand{\toc@start}{% + \if@bibchapter + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \fi} + +\newcommand{\toc@finish}{% + \if@bibchapter + \if@restonecol\twocolumn\fi + \fi} + +\newcommand{\tocfile}[2]{% + \toc@start + \if@bibchapter + \toc@chapter{#1} + \else + \toc@section{\@tocextra}{#1} + \fi + \@starttoc{#2} + \toc@finish} + +\if@dotoctoc + \renewcommand{\tableofcontents}{% + \tocfile{\contentsname}{toc} + } +\fi + +\if@dotoclot + \renewcommand{\listoftables}{% + \tocfile{\listtablename}{lot} + } +\fi + +\if@dotoclof + \renewcommand{\listoffigures}{% + \tocfile{\listfigurename}{lof} + } +\fi + +\newcommand{\simplechapter}[1][\@empty]{% + \let\@tbiold@makechapterhead\@makechapterhead + \renewcommand{\@makechapterhead}[1]{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright + \normalfont + \interlinepenalty\@M + \Huge\bfseries #1\space\thechapter\simplechapterdelim\space + ##1\par\nobreak + \vskip 40\p@ + }} +} +\newcommand{\restorechapter}{% + \@ifundefined{@tbiold@makechapterhead}{}% + {\let\@makechapterhead\@tbiold@makechapterhead} +} +\newcommand{\simplechapterdelim}{} + +\newcommand{\tocchapter}{% + \providecommand{\@makechapterhead}{} + \simplechapter + \renewcommand{\toc@chapter}[1]{\chapter{##1}} +} +\newcommand{\tocsection}{% + \renewcommand{\toc@section}[2]{\@nameuse{##1}{##2}} +} + +\endinput +%% +%% End of file `tocbibind.sty'. diff --git a/vu-cs-standard-thesis/vmargin.sty b/vu-cs-standard-thesis/vmargin.sty new file mode 100644 index 0000000..2f4f67d --- /dev/null +++ b/vu-cs-standard-thesis/vmargin.sty @@ -0,0 +1,576 @@ +%%---------------------------------------------------------------------- +%% vmargin.sty +% +% LaTeX package which introduces paper sizes and provides macros for +% setting document margins. +% This package supersedes package vpage. +% +% This file can be made part of a format by typing \input vmargin.sty +% before dumping the format. +% +% Documentation & history after (last) \endinput. +% +% Still works with LaTeX 2.09. +% Supported = yes. +% +% +% Copyright (C) 1993, 1994, 1995, 1996, 1999 by: +% +% Volker Kuhlmann +% c/o University of Canterbury +% ELEC Dept +% Creyke Road +% Christchurch, New Zealand +% E-Mail: v.kuhlmann@elec.canterbury.ac.nz +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License, distributed from CTAN +% archives as macros/latex/base/lppl.txt; either +% version 1 of the License, or (at your option) any later version. +% +%%---------------------------------------------------------------------- + +%\def\filename{Vmargin} +\def\filename{vmargin} +\def\fileversion{V2.2} +\def\filedate{1999/06/01} + +\@ifundefined{Vmargin}{}{\endinput} + +\@ifundefined{documentclass}{ + \edef\Vmargin{Style `\filename', \fileversion, \filedate} + \expandafter\everyjob\expandafter{\the\everyjob\typeout{\Vmargin}} + \typeout{\Vmargin} +}{ + \NeedsTeXFormat{LaTeX2e}[1994/06/01] + \ProvidesPackage{\filename}[\filedate] + \edef\Vmargin{Package `\filename', \fileversion, <\filedate>} + \expandafter\everyjob\expandafter{\the\everyjob\typeout{\Vmargin}} + \typeout{\Vmargin} +} + + +% new lengths: \PaperWidth, \PaperHeight +% new if: \ifLandscape +% +\newdimen\PaperWidth +\newdimen\PaperHeight +% +\newif\ifLandscape + + +% \setpapersize +% +\def\setpapersize{\@ifnextchar[{\@@setps}{\@@setps[portrait]}} +\def\@@setps[#1]{% + \@ifundefined{po@#1}{\@name@err{#1}}{\@nameuse{po@#1}}% + \@@@setps} +\def\@@@setps#1{% + \@ifundefined{paper@#1}{\@name@err{#1}}{}% + \csname paper@#1\endcsname} + % \usename{paper@#1} inside arg to \@ifundefined does not work + % with papersize "custom". +\def\po@portrait{\Landscapefalse} +\def\po@landscape{\Landscapetrue} +\def\@po@{\ifLandscape\dimen0\PaperWidth + \PaperWidth\PaperHeight\PaperHeight\dimen0\fi + \@ifundefined{paperwidth}{}{\paperwidth\PaperWidth}% + \@ifundefined{paperheight}{}{\paperheight\PaperHeight}} +\@ifundefined{PackageError}{ + \def\@name@err#1{% + \typeout{*****> \string\setpapersize: illegal parameter: #1}} +}{ + \def\@name@err#1{\PackageError{\filename}% + {Paper size or orientation unknown: #1}{}} +} + + +% pre-defined paper/envelope sizes +% +% A0, A1, A2, ..., A9, B0, B1, ..., B9, C0, C1, ..., C9 +% USletter, USlegal, USexecutive +% custom +% +\def\@defmetricpaper#1#2#3{% + \begingroup + \count0=0 + \def\w{\dimen1 }\def\h{\dimen2 }\def\s{\dimen3 }% + \w#2\h#3 + \def\l{11} + \loop + \begingroup + \def\t{\the\count0} + \catcode`\t=11 % letter + \expandafter\xdef\csname paper@#1\the\count0\endcsname{% + \PaperWidth\the\w\PaperHeight\the\h\noexpand\@po@} + \endgroup + \s\w\w.5\h\h\s + \ifnum\the\count0<9 + \advance\count0 by 1 + \repeat + \endgroup +} +% +\@defmetricpaper{A}{840.9mm}{1189.2mm} +\@defmetricpaper{B}{1000mm}{1414mm} +\@defmetricpaper{C}{917mm}{1297mm} +% +\let\@defmetricpaper=\relax % delete definition to save memory +% +\def\paper@USletter{\PaperWidth 8.5in \PaperHeight 11in \@po@} +\def\paper@USlegal{\PaperWidth 8.5in \PaperHeight 14in \@po@} +\def\paper@USexecutive{\PaperWidth 7.25in\PaperHeight 10.5in \@po@} +% +\def\paper@custom#1#2{\PaperWidth#1\PaperHeight#2\@po@} + + +% margin@offset +% +% Compensates for the +1in/+1in top/left corner +% by either reducing the margins or \hoffset, \voffset by 1in. +% This macro is only defined here if it is not already defined! +% (see documentation at the end) +% +\newif\if@shiftmargins +\@shiftmarginsfalse % this MUST be default (pageframe.sty) +% +\@ifundefined{margin@offset}{ +\def\margin@offset{ + \if@shiftmargins + \oddsidemargin -1in\evensidemargin -1in\topmargin -1in + \hoffset 0in\voffset 0in\relax + \else + \oddsidemargin 0in\evensidemargin 0in\topmargin 0in + \hoffset -1in\voffset -1in\relax + \fi +}}{} +% +\def\shiftmargins{\@shiftmarginstrue} + + +% Setting margins +% +% \setmargins{leftmargin}{topmargin}{textwidth}{textheight}% +% {headheight}{headsep}{footheight}{footskip} +% +\newcommand\setmargins[8]{% + \margin@offset + \advance\oddsidemargin #1 + \advance\evensidemargin \PaperWidth % = paperwidth - left + \advance\evensidemargin -#1 % - width + \advance\evensidemargin -#3 + \advance\topmargin #2 + \textwidth #3 + \textheight #4 + \headheight #5 + \headsep #6 + \@ifundefined{footheight}{}{\footheight=#7}% + \footskip #8 + \chk@dimen{#1}{#2}{#3}{#4}% +} +% +% \setmarginsrb{leftmargin}{topmargin}{rightmargin}{bottommargin}% +% {headheight}{headsep}{footheight}{footskip} +% +\newcommand\setmarginsrb[8]{% + \margin@offset + \textwidth \PaperWidth % = paperwidth + \advance\textwidth -#1 % - left - right + \advance\textwidth -#3 + \textheight \PaperHeight % = paperheight - top + \advance\textheight -#2 % - headheight + \advance\textheight -#5 % - headsep + \advance\textheight -#6 % - footskip - bottom + \advance\textheight -#8 + \advance\textheight -#4 + \advance\oddsidemargin #1 + \advance\evensidemargin \PaperWidth % = paperwidth + \advance\evensidemargin -#1 % - left - width + \advance\evensidemargin -\textwidth + \advance\topmargin #2 + \headheight #5 + \headsep #6 + \@ifundefined{footheight}{}{\footheight=#7}% + \footskip #8 + \chk@dimen{#1}{#2}{#3}{#4}% +} +% +% \setmargnohf{leftmargin}{topmargin}{textwidth}{textheight} +% headheight, headsep, footheight, footskip set to 0pt +\newcommand\setmargnohf[4]{% + \setmargins{#1}{#2}{#3}{#4}\z@\z@\z@\z@ + \pagestyle{empty}} +% +% \setmargnohfrb{leftmargin}{topmargin}{rightmargin}{bottommargin} +% headheight, headsep, footheight, footskip set to 0pt +\newcommand\setmargnohfrb[4]{% + \setmarginsrb{#1}{#2}{#3}{#4}\z@\z@\z@\z@ + \pagestyle{empty}} +% +% \setmarg{leftmargin}{topmargin}{textwidth}{textheight} +% headheight, headsep, footheight, footskip unchanged +\newcommand\setmarg[4]{% + \setmargins{#1}{#2}{#3}{#4}% + \headheight\headsep\footheight\footskip} +% +% \setmargrb{leftmargin}{topmargin}{rightmargin}{bottommargin} +% headheight, headsep, footheight, footskip unchanged +\newcommand\setmargrb[4]{% + \setmarginsrb{#1}{#2}{#3}{#4}% + \headheight\headsep\footheight\footskip} +% +% h-warning if [leftmarg + textwidth > paperwidth] resp. +% if [leftmarg + rightmarg > paperwidth]. +% v-warning if [topmarg + textheight > paperheight] resp. +% if [topmarg + bottommarg > paperheight]. +\def\chk@dimen#1#2#3#4{% + \dimen0= #1 + \advance\dimen0 by#3 + \advance\dimen0 -\PaperWidth + \dimen1= #2 + \advance\dimen1 by#4 + \advance\dimen1 \headheight + \advance\dimen1 \headsep + \advance\dimen1 \footskip + \advance\dimen1 -\PaperHeight + \chk@dimen@err +} +\@ifundefined{PackageError}{ + \def\chk@dimen@err{ + \ifnum\dimen0>\z@\typeout{vmargin Warning: Horizontal dimensions + exceed paper width by \the\dimen0}\fi + \ifnum\dimen1>\z@\typeout{vmargin Warning: Vertical dimensions + exceed paper height by \the\dimen1}\fi + } +}{ + \def\chk@dimen@err{ + \ifnum\dimen0>\z@\PackageError{\filename}{% + Horizontal dimensions exceed paper width by \the\dimen0}{}\fi + \ifnum\dimen1>\z@\PackageError{\filename}{% + Vertical dimensions exceed paper height by \the\dimen1}{}\fi + } +} + + +% +% DEFAULTS: +% +\setpapersize{A4} +\def\@hf@dflt{} +\@ifundefined{DeclareOption}{ +}{ + \DeclareOption{shiftmargins}{\shiftmargins} + \DeclareOption{portrait}{\Landscapefalse} + \DeclareOption{landscape}{\Landscapetrue} + \DeclareOption{nohf}{\def\@hf@dflt{y}} + \DeclareOption*{\@@@setps{\CurrentOption}} + \ProcessOptions\relax % process options in order of declaration! +} +\if y\@hf@dflt + \setmargnohfrb{35mm}{20mm}{25mm}{15mm}% +\else + \setmarginsrb{35mm}{20mm}{25mm}{15mm}{12pt}{11mm}{0pt}{11mm}% +\fi + + +\endinput + +%%---------------------------------------------------------------------- + +Page Size and Margins +===================== + +These macros make it easy to set page margins for a chosen paper size. +Actual dimensions of the most common paper sizes are stored and need +not be remembered. + +Two sided printing is supported, meaning that if on odd pages the left +margin is, say, 30mm and the right margin is 20mm, it will be vice +versa on even pages. This gives equal margins on the outer and equal +margins on the inner edge of the paper, as expected e.g. for a book. + +vmargin is designed to be reasonably restricted in both memory usage +and processing time, so that the common task of setting margins is not +too distracting. If you are looking for something fancier try the +geometry package. + +The basic procedure of using vmargin is to first set a paper size, and +then to set the margins. The margin setting functions depend on the +paper size. Setting the paper size and margins are two independent +operations, i.e. setting the paper size does not directly affect the +margins but will affect the next margin setting command. + +The size of the paper can be set with + + \setpapersize{<size>} + +<size> can be A0, A1, ..., A9, B0, B1, ..., B9, C0, ..., C9, USletter, +USlegal, and USexecutive. The metric paper sizes are not stored but +calculated. \setpapersize by default sets the orientation to portrait. + +Landscape format is selected by using the optional argument + + \setpapersize[landscape]{<size>} + +which swaps the width and height dimensions of the paper. +\setpapersize[portrait]{<size>} is allowed but is the default. + +If you have a size which is not pre-defined use + + \setpapersize{custom}{<width>}{<height>} + +For <width> and <height> insert the respective dimensions of your +paper. + +\setpapersize stores the actual dimensions of the paper in the length +variables + + \PaperWidth + \PaperHeight + +which can be used further, if desired. + + \ifLandscape + +yields true if a landscape format is selected. Do not write to +\PaperWidth, \PaperHeight, or call \Landscapetrue or \Landscapefalse, +it will not work!! + +The margins can be set with + + \setmargins{leftmargin}{topmargin}{textwidth}{textheight}% + {headheight}{headsep}{footheight}{footskip} + +or with + + \setmarginsrb{leftmargin}{topmargin}{rightmargin}{bottommargin}% + {headheight}{headsep}{footheight}{footskip} + +In the latter case \textwidth and \textheight are calculated using the +width and height of the selected paper. The first four parameters of +the above two commands are used to set \oddsidemargin, \evensidemargin, +\textwidth, \topmargin, and \textheight. + + \setmargnohf, \setmargnohfrb + +Provide a page with no header and footer. They work the same as +\setmargins, \setmarginsrb except that they only need the first 4 +parameters. The last 4 parameters are set to 0pt. These 2 commands set +the pagestyle to empty (\pagestyle{empty}) as there is no space for +headers or footers. + + \setmarg, \setmargrb + +are the same as \setmargnohf, \setmargnohfrb except that the last 4 +parameters to \setmargins, \setmarginsrb are unchanged. + +Example: + + A4 paper, left margin 30mm, top, right, and bottom margin 20mm + each, no headers or footers: + + \setpapersize{A4} + \setmarginsrb{30mm}{20mm}{20mm}{20mm}{0pt}{0mm}{0pt}{0mm} + \pagestyle{empty} + +The same settings would result with: + + \setpapersize{A4} + \setmargnohfrb{30mm}{20mm}{20mm}{20mm} + +For the default settings please see the part after "DEFAULTS:" (last +part before \endinput). + +The default top and left margins of TeX are +1in. \setmargXXX call + + \margin@offset + +which initialises \hoffset, \voffset to -1in and \oddsidemargin, +\evensidemargin, \topmargin to 0in. \setmargXXX then add the given +dimensions to \topmargin, \oddsidemargin, \evensidemargin. In some +cases it might be desired to use \XXXmargin instead of \Xoffset for +compensation. This can be achieved by telling \margin@offset to +initialise \Xoffset to 0in and \XXXmargin to -1in. This is done by +% + \shiftmargins. +% +If \margin@offset is already defined at the time vmargin is loaded it +is NOT redefined! Therefore if \margin@offset is defined before vmargin +is loaded the above mentioned compensation can be replaced by a +different mechanism. In any case \setmargXXX call \margin@offset and +then expect that \XXXmargin are set to useful values. \Xoffset are not +touched by \setmargXXX. \margin@offset should be defined in a separate +file which is included BEFORE vmargin, i.e. appears in the list of +document-substyles of the \documentstyle command before vmargin. +% +Any better way of doing this? (grumble) + +Example: \documentstyle[...,margins,vmargin,...]{...} + if \margin@offset is defined in a file called margins.sty. + +LaTeX2e: \documentclass[...]{...} + \usepackage{...,margins,vmargin,...} + + +LaTeX2e +------- + +This package now uses some of the new LaTeX2e features for package +programming. It will still work with LaTeX 2.09 (in which case the new +features are not used, resp. are inaccessible). + +LaTeX2e (unless in compatibility mode) does not know \footheight any +more. vmargin does not set this variable if it does not exist, and sets +it if it does. As \footheight was not used by LaTeX 2.09 all this has +little significance. + +LaTeX2e now has the dimensions \paperwidth, \paperheight which hold the +size of the paper. \PaperWidth, \PaperHeight are copied into +\paperwidth, \paperheight if the latter exist. This makes vmargin work +correctly with anything that expects \paperwidth, \paperheight to be +set properly. The names \PaperWidth, \PaperHeight had been chosen in +the first place to avoid clashes with style files that also use these +names (namely pageframe.sty). + +The following package options are available under LaTeX2e: + +shiftmargins same as \shiftmargins +portrait +landscape +A4, etc. same as using \setpapersize[...]{...} + Note: \setpapersize always sets the orientation to + portrait unless landscape is given. Using \setpapersize + after \usepackage causes package option landscape to be + ignored. +nohf do not make space for header and footer lines; this also + sets the pagestyle to empty + +All unknown options are treated as a paper size, if necessary +generating an error that the requested paper size is not defined. + + +Inclusion in TeX formats +------------------------ + +This file may be loaded in initex before dumping the format, by typing + \makeatletter + \input vmargin.sty + \makeatother +Note: this produces a non-standard format. + + +Hints for using pageframe.sty +----------------------------- + +vmargin.sty and pageframe.sty can be used together if the following +points are considered: + +vmargin uses \hoffset and \voffset and writes negative values into it, +pageframe expects them to be zero to give a 1in space on the left and +the top where it prints additional information. Initially, set both to +0mm (in the pre-amble of your text) and adjust them later on. + +pageframe needs to know the trimmed height of the paper (= the height +of the "page frame"). Unless the trimmed(!) size of the paper is +equivalent to one of the standard paper sizes (unlikely...) the size +should be specified with + + \setpapersize{custom}{<width>}{<height>} + +The correct height of the trimmed page can then be given to pageframe +using + + \paperheight{\PaperHeight} + +and the margins of the final product (inside the page frame) can be +specified using \setmargXXX. + +Warning: if \setmargXXXrb is used the 3rd parameter (right margin) is +ignored. Instead, the dimension of the right margin has to be assigned +to \evensidemargin. This is because pageframe.sty re-defines the meaning +of \evensidemargin to be the right margin of your text, on all pages. + +Remember: all these assignments and macro calls have to be in the +pre-amble of the document. + + +Bugs: +----- + +I have not tested this with older versions of LaTeX2e because I don't +have any. If there are any problems pleease do let me know and I'll do +something about it. + + +To do: +------ + +* The way the metric paper sizes are stored takes up a lot of space. A + metric size could be computed by \setpapersize. + + +SUMMARY: +======== + +new lengths: + \PaperWidth + \PaperHeight + +new ifs: + \ifLandscape + +new macros: + \setpapersize[<orientation>]{<size>}, + \setpapersize[<orientation>]{custom}{<width>}{<height>} + <orientation> (optional) = landscape or portrait (default) + <size> = A4, B5, ... + <width>, <height> = actual dimensions of the paper + \setmargins{leftmargin}{topmargin}{textwidth}{textheight}% + {headheight}{headsep}{footheight}{footskip} + \setmarginsrb{leftmargin}{topmargin}{rightmargin}{bottommargin}% + {headheight}{headsep}{footheight}{footskip} + \setmargnohf{leftmargin}{topmargin}{textwidth}{textheight} + \setmargnohfrb{leftmargin}{topmargin}{rightmargin}{bottommargin} + \setmarg{leftmargin}{topmargin}{textwidth}{textheight} + \setmargrb{leftmargin}{topmargin}{rightmargin}{bottommargin} +% + \margin@offset + \shiftmargins + +LaTeX2e package options: + shiftmargins + portrait + landscape + nohf + all other options are treated as paper sizes + + +If you have any comments (positive or negative) please let me know! + + + +HISTORY: +======== + + . + . Created out of Vpage.sty. + . +V1.7 21 May 1994 Changed file header. +V1.72 21 May 1994 Fixed bug in \setpapersize{custom} +V1.8 28 May 94 Commented \chk@dimen; reduced load on TeX's + parameter stack (changed \chk@dimen). + Put a conditional around references + to \footheight. +V1.9 22 Jun 94 Corrected spelling in comment. +V2.0 28 Jun 94 Added support for LaTeX2e \paperwidth, + \paperheight. +V2.1 20 Sep 94 \@defmetricpaper now defines \w, \h, \s locally. + Thanks to branderhorst@fgg.eur.nl! +V2.12 28 Mar 95 Fixed documentation for \setmargrb. +V2.13 26 Jun 96 Fixed comment for \setmarginsrb. +V2.2 31 May 99 Released under LPPL. + Changed references to Vmargin to vmargin. + LaTeX2e package options introduced. +% +%% EOF vmargin.sty +%%---------------------------------------------------------------------- |
