スケジュールクラスによって作成されたタイムテーブルに時間範囲を追加する

スケジュールクラスによって作成されたタイムテーブルに時間範囲を追加する

スケジュール クラスによって作成されたタイムテーブル内の各イベントまでの期間を自動的に印刷するにはどうすればよいでしょうか。例:

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

ここで、手動で再入力せずに、対応する予定セルの下部に時間範囲を印刷したいと思います。たとえば、「営業時間」の場合は、「14:00 - 14:50」と印刷する必要があります。どうすればいいでしょうか?

理想的には、以下も機能するはずです。

  • 期間ごとに個別のフォントサイズを(グローバルに)指定する
  • セルの下部に左揃え、中央揃え、右揃えのいずれにするかを指定します
  • 印刷するかどうかのデフォルトをグローバルに指定します
  • このグローバル設定をローカルで上書きするためのオプションの引数を追加します

答え1

event簡単で簡単な方法は、時間引数を予定のタイトルに転送する新しいマクロを定義することです。

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

このマクロを予約パラメータの前に置くだけです。

\event最初のパラメータは予定のマクロ名で、次の 4 つの引数は元の予定マクロに転送されます。

5 番目の引数 (時間) は、予定のタイトルを拡張するためにも使用されます。

完全な例として:

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

その他のニーズは -macro 内で定義できます\event。例:

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

新しいマクロはありませんが、既存のコードが変更された別のバージョン:

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

場所の横に時間が追加されます。部屋が長すぎない限り、これは問題ないと思います (実際の部屋ではなく、部屋の名前です :) )

コメントとして: 時間を新しい行に配置するバリアントですが、正しい配置が設定されていませんでした。

関連情報