caratula.sty 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  1. % **************************************************************************
  2. %
  3. % Package 'caratula', version 0.5 (para componer caratulas de TPs del DC).
  4. %
  5. % En caso de dudas, problemas o sugerencias sobre este package escribir a
  6. % Brian J. Cardiff (bcardif arroba gmail.com).
  7. % Nico Rosner (nrosner arroba dc.uba.ar).
  8. %
  9. % **************************************************************************
  10. % ----- Informacion sobre el package para el sistema -----------------------
  11. \NeedsTeXFormat{LaTeX2e}
  12. \ProvidesPackage{caratula}[2013/08/04 v0.5 Para componer caratulas de TPs del DC]
  13. \RequirePackage{ifthen}
  14. \usepackage{graphicx}
  15. % ----- Imprimir un mensajito al procesar un .tex que use este package -----
  16. \typeout{Cargando package 'caratula' v0.5 (2013/08/04)}
  17. % ----- Algunas variables --------------------------------------------------
  18. \let\Materia\relax
  19. \let\Submateria\relax
  20. \let\Titulo\relax
  21. \let\Subtitulo\relax
  22. \let\Grupo\relax
  23. \let\Fecha\relax
  24. \let\Logoimagefile\relax
  25. \newcommand{\LabelIntegrantes}{}
  26. \newboolean{showLU}
  27. \newboolean{showEntregas}
  28. \newboolean{showDirectores}
  29. \newboolean{showCoDirectores}
  30. % ----- Comandos para que el usuario defina las variables ------------------
  31. \def\materia#1{\def\Materia{#1}}
  32. \def\submateria#1{\def\Submateria{#1}}
  33. \def\titulo#1{\def\Titulo{#1}}
  34. \def\subtitulo#1{\def\Subtitulo{#1}}
  35. \def\grupo#1{\def\Grupo{#1}}
  36. \def\fecha#1{\def\Fecha{#1}}
  37. \def\logoimagefile#1{\def\Logoimagefile{#1}}
  38. % ----- Token list para los integrantes ------------------------------------
  39. \newtoks\intlist\intlist={}
  40. \newtoks\intlistSinLU\intlistSinLU={}
  41. \newcounter{integrantesCount}
  42. \setcounter{integrantesCount}{0}
  43. \newtoks\intTabNombre\intTabNombre={}
  44. \newtoks\intTabLU\intTabLU={}
  45. \newtoks\intTabEmail\intTabEmail={}
  46. \newcounter{directoresCount}
  47. \setcounter{directoresCount}{0}
  48. \newtoks\direcTabNombre\direcTabNombre={}
  49. \newtoks\direcTabEmail\direcTabEmail={}
  50. \newcounter{coDirectoresCount}
  51. \setcounter{coDirectoresCount}{0}
  52. \newtoks\codirecTabNombre\codirecTabNombre={}
  53. \newtoks\codirecTabEmail\codirecTabEmail={}
  54. % ----- Comando para que el usuario agregue integrantes --------------------
  55. \def\integrante#1#2#3{%
  56. \intlist=\expandafter{\the\intlist\rule{0pt}{1.2em}#1&#2&\tt #3\\[0.2em]}%
  57. \intlistSinLU=\expandafter{\the\intlistSinLU\rule{0pt}{1.2em}#1 & \tt #3\\[0.2em]}%
  58. %
  59. \ifthenelse{\value{integrantesCount} > 0}{%
  60. \intTabNombre=\expandafter{\the\intTabNombre & #1}%
  61. \intTabLU=\expandafter{\the\intTabLU & #2}%
  62. \intTabEmail=\expandafter{\the\intTabEmail & \tt #3}%
  63. }{
  64. \intTabNombre=\expandafter{\the\intTabNombre #1}%
  65. \intTabLU=\expandafter{\the\intTabLU #2}%
  66. \intTabEmail=\expandafter{\the\intTabEmail \tt #3}%
  67. }%
  68. \addtocounter{integrantesCount}{1}%
  69. }
  70. \def\director#1#2{%
  71. \ifthenelse{\value{directoresCount} > 0}{%
  72. \direcTabNombre=\expandafter{\the\direcTabNombre & #1}%
  73. \direcTabEmail=\expandafter{\the\direcTabEmail & \tt #2}%
  74. }{
  75. \direcTabNombre=\expandafter{\the\direcTabNombre #1}%
  76. \direcTabEmail=\expandafter{\the\direcTabEmail \tt #2}%
  77. }%
  78. \addtocounter{directoresCount}{1}%
  79. }
  80. \def\codirector#1#2{%
  81. \ifthenelse{\value{coDirectoresCount} > 0}{%
  82. \codirecTabNombre=\expandafter{\the\codirecTabNombre & #1}%
  83. \codirecTabEmail=\expandafter{\the\codirecTabEmail & \tt #2}%
  84. }{
  85. \codirecTabNombre=\expandafter{\the\codirecTabNombre #1}%
  86. \codirecTabEmail=\expandafter{\the\codirecTabEmail \tt #2}%
  87. }%
  88. \addtocounter{coDirectoresCount}{1}%
  89. }
  90. % ----- Macro para generar la tabla de integrantes -------------------------
  91. \newcommand{\tablaIntegrantes}{\ }
  92. \newcommand{\tablaIntegrantesVertical}{%
  93. \ifthenelse{\boolean{showLU}}{%
  94. \begin{tabular}[t]{| l @{\hspace{4ex}} c @{\hspace{4ex}} l|}
  95. \hline
  96. \multicolumn{1}{|c}{\rule{0pt}{1.2em} \LabelIntegrantes} & LU & \multicolumn{1}{c|}{Correo electr\'onico} \\[0.2em]
  97. \hline \hline
  98. \the\intlist
  99. \hline
  100. \end{tabular}
  101. }{
  102. \begin{tabular}[t]{| l @{\hspace{4ex}} @{\hspace{4ex}} l|}
  103. \hline
  104. \multicolumn{1}{|c}{\rule{0pt}{1.2em} \LabelIntegrantes} & \multicolumn{1}{c|}{Correo electr\'onico} \\[0.2em]
  105. \hline \hline
  106. \the\intlistSinLU
  107. \hline
  108. \end{tabular}
  109. }%
  110. }
  111. \newcommand{\tablaIntegrantesHorizontal}{%
  112. \begin{tabular}[t]{ *{\value{integrantesCount}}{c} }
  113. \the\intTabNombre \\%
  114. \ifthenelse{\boolean{showLU}}{
  115. \the\intTabLU \\%
  116. }{}
  117. \the\intTabEmail %
  118. \end{tabular}%
  119. }
  120. \newcommand{\tablaDirectores}{%
  121. \ifthenelse{\boolean{showDirectores}}{%
  122. \bigskip
  123. Directores
  124. \smallskip
  125. \begin{tabular}[t]{ *{\value{directoresCount}}{c} }
  126. \the\direcTabNombre \\%
  127. \the\direcTabEmail %
  128. \end{tabular}%
  129. }{}%
  130. }
  131. \newcommand{\tablaCoDirectores}{%
  132. \ifthenelse{\boolean{showCoDirectores}}{%
  133. \bigskip
  134. Co-Directores
  135. \smallskip
  136. \begin{tabular}[t]{ *{\value{coDirectoresCount}}{c} }
  137. \the\codirecTabNombre \\%
  138. \the\codirecTabEmail %
  139. \end{tabular}%
  140. }{}%
  141. }
  142. \newcommand{\tablaEntregas}{%
  143. \ifthenelse{\boolean{showEntregas}}{%
  144. \bigskip%
  145. \begin{tabular}[t]{|l p{3.5cm} p{1.5cm}|}%
  146. \hline%
  147. \rule{0pt}{1.2em} Instancia & Docente & Nota \\[0.2em] %
  148. \hline%
  149. \hline%
  150. \rule{0pt}{1.2em} Primera entrega & & \\[0.2em] %
  151. \hline%
  152. \rule{0pt}{1.2em} Segunda entrega & & \\[0.2em] %
  153. \hline%
  154. \end{tabular}%
  155. }{}%
  156. }
  157. % ----- Codigo para manejo de errores --------------------------------------
  158. \def\se{\let\ifsetuperror\iftrue}
  159. \def\ifsetuperror{%
  160. \let\ifsetuperror\iffalse
  161. \ifx\Materia\relax\se\errhelp={Te olvidaste de proveer una \materia{}.}\fi
  162. \ifx\Titulo\relax\se\errhelp={Te olvidaste de proveer un \titulo{}.}\fi
  163. \edef\mlist{\the\intlist}\ifx\mlist\empty\se%
  164. \errhelp={Tenes que proveer al menos un \integrante{nombre}{lu}{email}.}\fi
  165. \expandafter\ifsetuperror}
  166. \def\aftermaketitle{%
  167. \setcounter{page}{1}
  168. }
  169. % ----- \maketitletxt correspondiente a la versi�n v0.2.1 (texto v0.2 + fecha ) ---------
  170. \def\maketitletxt{%
  171. \ifsetuperror\errmessage{Faltan datos de la caratula! Ingresar 'h' para mas informacion.}\fi
  172. \thispagestyle{empty}
  173. \begin{center}
  174. \vspace*{\stretch{2}}
  175. {\LARGE\textbf{\Materia}}\\[1em]
  176. \ifx\Submateria\relax\else{\Large \Submateria}\\[0.5em]\fi
  177. \ifx\Fecha\relax\else{\Large \Fecha}\\[0.5em]\fi
  178. \par\vspace{\stretch{1}}
  179. {\large Departamento de Computaci\'on}\\[0.5em]
  180. {\large Facultad de Ciencias Exactas y Naturales}\\[0.5em]
  181. {\large Universidad de Buenos Aires}
  182. \par\vspace{\stretch{3}}
  183. {\Large \textbf{\Titulo}}\\[0.8em]
  184. {\Large \Subtitulo}
  185. \par\vspace{\stretch{3}}
  186. \ifx\Grupo\relax\else\textbf{\Grupo}\par\bigskip\fi
  187. \tablaIntegrantes
  188. \end{center}
  189. \vspace*{\stretch{3}}
  190. \newpage\aftermaketitle}
  191. % ----- \maketitletxtlogo correspondiente v0.2.1 (texto con fecha y logo) ---------
  192. \def\maketitletxtlogo{%
  193. \ifsetuperror\errmessage{Faltan datos de la caratula! Ingresar 'h' para mas informacion.}\fi
  194. \thispagestyle{empty}
  195. \begin{center}
  196. \ifx\Logoimagefile\relax\else\includegraphics{\Logoimagefile}\fi \hfill \includegraphics{logo_dc.jpg}\\[1em]
  197. \vspace*{\stretch{2}}
  198. {\LARGE\textbf{\Materia}}\\[1em]
  199. \ifx\Submateria\relax\else{\Large \Submateria}\\[0.5em]\fi
  200. \ifx\Fecha\relax\else{\large \Fecha}\\[0.5em]\fi
  201. \par\vspace{\stretch{1}}
  202. {\large Departamento de Computaci\'on}\\[0.5em]
  203. {\large Facultad de Ciencias Exactas y Naturales}\\[0.5em]
  204. {\large Universidad de Buenos Aires}
  205. \par\vspace{\stretch{3}}
  206. {\Large \textbf{\Titulo}}\\[0.8em]
  207. {\Large \Subtitulo}
  208. \par\vspace{\stretch{3}}
  209. \ifx\Grupo\relax\else\textbf{\Grupo}\par\bigskip\fi
  210. \tablaIntegrantes
  211. \end{center}
  212. \vspace*{\stretch{4}}
  213. \newpage\aftermaketitle}
  214. % ----- \maketitlegraf correspondiente a la versi�n v0.3 (gr�fica) -------------
  215. \def\maketitlegraf{%
  216. \ifsetuperror\errmessage{Faltan datos de la caratula! Ingresar 'h' para mas informacion.}\fi
  217. %
  218. \thispagestyle{empty}
  219. \ifx\Logoimagefile\relax\else\includegraphics{\Logoimagefile}\fi \hfill \includegraphics{logo_dc.jpg}
  220. \vspace*{.06 \textheight}
  221. \noindent \textbf{\huge \Titulo} \medskip \\
  222. \ifx\Subtitulo\relax\else\noindent\textbf{\large \Subtitulo} \\ \fi%
  223. \noindent \rule{\textwidth}{1 pt}
  224. {\noindent\large\Fecha \hspace*\fill \Materia} \\
  225. \ifx\Submateria\relax\else{\noindent \hspace*\fill \Submateria}\fi%
  226. \medskip%
  227. \begin{center}
  228. \ifx\Grupo\relax\else\textbf{\Grupo}\par\bigskip\fi
  229. \tablaIntegrantes
  230. \tablaDirectores
  231. \tablaCoDirectores
  232. \tablaEntregas
  233. \end{center}%
  234. \vfill%
  235. %
  236. \begin{minipage}[t]{\textwidth}
  237. \begin{minipage}[t]{.55 \textwidth}
  238. \includegraphics{logo_uba.jpg}
  239. \end{minipage}%%
  240. \begin{minipage}[b]{.45 \textwidth}
  241. \textbf{\textsf{Facultad de Ciencias Exactas y Naturales}} \\
  242. \textsf{Universidad de Buenos Aires} \\
  243. {\scriptsize %
  244. Ciudad Universitaria - (Pabell\'on I/Planta Baja) \\
  245. Intendente G\"uiraldes 2610 - C1428EGA \\
  246. Ciudad Aut\'onoma de Buenos Aires - Rep. Argentina \\
  247. Tel/Fax: (++54 +11) 4576-3300 \\
  248. http://www.exactas.uba.ar \\
  249. }
  250. \end{minipage}
  251. \end{minipage}%
  252. %
  253. \newpage\aftermaketitle}
  254. % ----- Reemplazamos el comando \maketitle de LaTeX con el nuestro ---------
  255. \renewcommand{\maketitle}{\maketitlegraf}
  256. % ----- Dependiendo de las opciones ---------
  257. %
  258. % opciones:
  259. % txt : caratula solo texto.
  260. % txtlogo : caratula txt con logo del DC y del grupo (opcional).
  261. % graf : (default) caratula grafica con logo del DC, UBA y del grupo (opcional).
  262. %
  263. \@makeother\*% some package redefined it as a letter (as color.sty)
  264. %
  265. % Layout general de la caratula
  266. %
  267. \DeclareOption{txt}{\renewcommand{\maketitle}{\maketitletxt}}
  268. \DeclareOption{txtlogo}{\renewcommand{\maketitle}{\maketitletxtlogo}}
  269. \DeclareOption{graf}{\renewcommand{\maketitle}{\maketitlegraf}}
  270. %
  271. % Etiqueta Autores o Integrantes
  272. %
  273. \DeclareOption{integrante}{\renewcommand{\LabelIntegrantes}{Integrante}}
  274. \DeclareOption{autor}{\renewcommand{\LabelIntegrantes}{Autor}}
  275. %
  276. % Formato tabla de integrantes
  277. %
  278. \DeclareOption{intVert}{\renewcommand{\tablaIntegrantes}{\tablaIntegrantesVertical}}
  279. \DeclareOption{intHoriz}{\renewcommand{\tablaIntegrantes}{\tablaIntegrantesHorizontal}}
  280. \DeclareOption{conLU}{\setboolean{showLU}{true}}
  281. \DeclareOption{sinLU}{\setboolean{showLU}{false}}
  282. \DeclareOption{conEntregas}{\setboolean{showEntregas}{true}}
  283. \DeclareOption{sinEntregas}{\setboolean{showEntregas}{false}}
  284. \DeclareOption{showDirectores}{\setboolean{showDirectores}{true}}
  285. \DeclareOption{hideDirectores}{\setboolean{showDirectores}{false}}
  286. \DeclareOption{showCoDirectores}{\setboolean{showCoDirectores}{true}}
  287. \DeclareOption{hideCoDirectores}{\setboolean{showCoDirectores}{false}}
  288. %
  289. % Opciones predeterminadas
  290. %
  291. \ExecuteOptions{intVert}%
  292. \ExecuteOptions{graf}%
  293. \ExecuteOptions{integrante}%
  294. \ExecuteOptions{conLU}%
  295. \ExecuteOptions{hideDirectores}%
  296. \ExecuteOptions{hideCoDirectores}%
  297. \ExecuteOptions{sinEntregas}%
  298. %
  299. \ProcessOptions\relax