
¿Cómo puedo imprimir automáticamente el intervalo de tiempo de cada evento en un horario creado por la clase de programación? Toma por ejemplo:
\documentclass{article}
\usepackage{schedule}
\begin{document}
\CellHeight{.4in}
\CellWidth{1in}
\TimeRange{12:00-15:00}
\SubUnits{30}
\BeginOn{Monday}
\TextSize{\tiny}
\FiveDay
\TwentyFourHour
\NewAppointment{meeting}{red}{white}
\NewAppointment{workshop}{green}{blue}
\begin{schedule}[Fall Quarter, 2020]
\class{Moral Philosophy}{HOB2 233}{M}{14:00-16:50}
\class{Math Logic}{EIC 128}{T,Th}{11:00-12:20}
\class{Critical Reasoning}{SSL 290}{M,W,F}{13:00-13:50}
\meeting{Departmental Meeting}{HOB2 233}{W}{12:00-12:50}
\workshop{Crit. Reas. Workshop}{HOB2 233}{T}{13:00-13:50}
\class{Office Hours}{HOB2 210}{W,F}{14:00-14:50}
\end{schedule}
\end{document}
Ahora quiero imprimir el período de tiempo en la parte inferior de la celda de cita correspondiente sin volver a ingresarlo manualmente. Por ejemplo, para "Horario de oficina", debería imprimir "14:00 - 14:50". ¿Cómo puedo hacer esto?
Idealmente, también debería funcionar lo siguiente:
- Especificar (globalmente) un tamaño de fuente separado para el período de tiempo
- Especificar si está alineado a la izquierda, al centro o a la derecha en la parte inferior de una celda
- Especificar globalmente un valor predeterminado si se imprimirá o no
- Agregue un argumento opcional para sobrescribir esta configuración global localmente
Respuesta1
Una solución rápida y sucia es definir una nueva macro event
para reenviar el argumento de tiempo al título de la cita:
\newcommand{\event}[5]{%
#1{#2\newline #5}{#3}{#4}{#5}%
}
Simplemente coloque esta macro delante de los parámetros de su cita.
\event
El primer parámetro es el nombre de la macro de la cita, los siguientes 4 argumentos se reenvían a la macro de la cita original.
El quinto argumento (la hora) se utiliza también para ampliar el título de la cita.
Como ejemplo completo:
\documentclass{article}
\usepackage{schedule}
\begin{document}
\CellHeight{.4in}
\CellWidth{1in}
\TimeRange{12:00-15:00}
\SubUnits{30}
\BeginOn{Monday}
\TextSize{\tiny}
\FiveDay
\TwentyFourHour
\NewAppointment{meeting}{red}{white}
\NewAppointment{workshop}{green}{blue}
\newcommand{\event}[5]{%
#1{#2\newline #5}{#3}{#4}{#5}%
}
\begin{schedule}[Fall Quarter, 2020]
\event{\class}{Moral Philosophy}{HOB2 233}{M}{14:00-16:50}
\event\class{Math Logic}{EIC 128}{T,Th}{11:00-12:20}
\event\class{Critical Reasoning}{SSL 290}{M,W,F}{13:00-13:50}
\event\meeting{Departmental Meeting}{HOB2 233}{W}{12:00-12:50}
\event\workshop{Crit. Reas. Workshop}{HOB2 233}{T}{13:00-13:50}
\event\class{Office Hours}{HOB2 210}{W,F}{14:00-14:50}
\end{schedule}
\end{document}
Sus otras necesidades podrían definirse dentro de \event
-macro. Por ejemplo:
\newcommand{\event}[5]{%
#1{#2\newline\large #5}{#3}{#4}{#5}%
}
Otra versión, sin una nueva macro, pero con una modificación del código existente:
\documentclass{article}
\usepackage{schedule}
\makeatletter
\def\draw@appt@box{%
\ifweekends \relax % if we use 7-days, this won't change
\else \ifx \the@day\skipday@i \@includefalse \fi % first condition for change
\ifx \the@day\skipday@ii \@includefalse \fi\fi % second condition for change
\ifinrange \relax\else \@includefalse \fi %
\if@include %
\put(\value{xcoords},\value{ycoords}){\colorbox{\appt@color}{\parbox[t]{\cell@width}{\ %
\vspace{\box@depth}}}}
\thinlines
\put(\value{xcoords},\value{ycoords}){\line(1,0){\value{pu@cell@width}}}
\put(\value{xcoords},\value{ycoords@bot}){\line(1,0){\value{pu@cell@width}}}
\put(\value{xcoords},\value{ycoords}){%
\ \parbox[t]{\cell@width-8pt}{\mbox{}\\ \appt@textsize %
\ifdim\box@depth>\baselineskip
\textcolor{\appt@textcolor}{\csname \appt@name @name\endcsname} \\ %
\ifdim\box@depth>2\baselineskip
\textcolor{\appt@textcolor}{\csname \appt@name
%%%%%%%%%%%Modifications
% @location\endcsname}\fi\fi }}\fi} %Original code
@location\endcsname%
\hfill \textit{\csname \appt@name @time\endcsname}%
%%\newline \csname \appt@name @time\endcsname%
}\fi\fi}}\fi}
%%%%%%%%%%%Modifications end
\makeatother
\begin{document}
\CellHeight{.4in}
\CellWidth{1in}
\TimeRange{12:00-15:00}
\SubUnits{30}
\BeginOn{Monday}
\TextSize{\tiny}
\FiveDay
\TwentyFourHour
\NewAppointment{meeting}{red}{white}
\NewAppointment{workshop}{green}{blue}
\begin{schedule}[Fall Quarter, 2020]
\class{Moral Philosophy}{HOB2 233}{M}{14:00-16:50}
\class{Math Logic}{EIC 128}{T,Th}{11:00-12:20}
\class{Critical Reasoning}{SSL 290}{M,W,F}{13:00-13:50}
\meeting{Departmental Meeting}{HOB2 233}{W}{12:00-12:50}
\workshop{Crit. Reas. Workshop}{HOB2 233}{T}{13:00-13:50}
\class{Office Hours}{HOB2 210}{W,F}{14:00-14:50}
\end{schedule}
\end{document}
La hora se agrega al lado de la ubicación. Supongo que esto está bien, a menos que las habitaciones no sean demasiado largas (no las habitaciones reales, el nombre de la habitación :))
Como comentario: una variante para poner la hora en una nueva línea, pero ahí no me pusieron la alineación correcta.