Zeitspanne zum Stundenplan hinzufügen, der von der Stundenplanklasse erstellt wurde

Zeitspanne zum Stundenplan hinzufügen, der von der Stundenplanklasse erstellt wurde

Wie kann ich automatisch die Zeitspanne für jedes Ereignis in einem von der Zeitplanklasse erstellten Zeitplan ausdrucken? Nehmen wir zum Beispiel:

\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}

Nun möchte ich die Zeitspanne unten in der entsprechenden Terminzelle ausdrucken, ohne sie manuell neu eingeben zu müssen. Bei „Sprechzeiten“ soll beispielsweise „14:00 - 14:50“ gedruckt werden. Wie kann ich das erreichen?

Idealerweise sollte auch Folgendes funktionieren:

  • Geben Sie (global) eine separate Schriftgröße für den Zeitraum an
  • Geben Sie an, ob es linksbündig, zentriert oder rechtsbündig am unteren Rand einer Zelle ausgerichtet ist.
  • Geben Sie global einen Standardwert an, ob gedruckt wird oder nicht
  • Fügen Sie ein optionales Argument hinzu, um diese globale Einstellung lokal zu überschreiben

Antwort1

Eine schnelle und einfache Lösung besteht darin, ein neues Makro zu definieren, eventum das Zeitargument an den Termintitel weiterzuleiten:

\newcommand{\event}[5]{%
  #1{#2\newline #5}{#3}{#4}{#5}%
}

Setzen Sie dieses Makro einfach vor Ihre Terminparameter.

\eventDer erste Parameter ist der Makroname des Termins, die nächsten 4 Argumente werden an das ursprüngliche Terminmakro weitergeleitet.

Das fünfte Argument (die Uhrzeit) wird ebenfalls zur Erweiterung des Termintitels verwendet.

Als vollständiges Beispiel:

\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}

Ihre weiteren Anforderungen können Sie innerhalb des -Makros definieren \event. Beispiel:

\newcommand{\event}[5]{%
  #1{#2\newline\large #5}{#3}{#4}{#5}%
}

Eine andere Version, ohne neues Makro, aber mit einer Änderung des vorhandenen Codes:

\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}

Die Zeit wird neben dem Ort hinzugefügt. Ich denke, das ist ok, solange die Räume nicht zu lang sind (nicht die echten Räume, der Raumname :) )

Als Anmerkung: eine Variante die Zeit in eine neue Zeile zu setzen, dort hatte ich allerdings nicht die richtige Ausrichtung eingestellt.

verwandte Informationen