일정수업별로 생성된 시간표에 시간범위 추가

일정수업별로 생성된 시간표에 시간범위 추가

일정 클래스에서 생성한 시간표의 각 이벤트에 대한 기간을 자동으로 인쇄하려면 어떻게 해야 합니까? 예를 들면 다음과 같습니다.

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

이제 수동으로 다시 입력하지 않고 해당 약속 셀 하단에 시간 범위를 인쇄하고 싶습니다. 예를 들어 "Office Hours"의 경우 "14:00 - 14:50"이 인쇄되어야 합니다. 어떻게 해야 하나요?

이상적으로는 다음도 작동해야 합니다.

  • 기간에 대해 별도의 글꼴 크기를 (전역적으로) 지정합니다.
  • 셀 아래쪽에 왼쪽, 가운데 또는 오른쪽 정렬 여부를 지정하세요.
  • 인쇄 여부를 전체적으로 기본값으로 지정
  • 이 전역 설정을 로컬로 덮어쓰려면 선택적 인수를 추가하세요.

답변1

빠르고 더러운 해결책은 event약속 제목에 시간 인수를 전달하는 새 매크로를 정의하는 것입니다.

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

이 매크로를 약속 매개변수 앞에 넣기만 하면 됩니다.

\event첫 번째 매개변수는 약속의 매크로 이름이고, 다음 4개의 인수는 원래 약속 매크로로 전달됩니다.

다섯 번째 인수(시간)는 약속 제목을 확장하는 데에도 사용됩니다.

완전한 예로서:

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

다른 요구 사항은 \event-macro 내부에서 정의할 수 있습니다. 예를 들어:

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

시간은 위치 옆에 추가됩니다. 방이 너무 길지 않은 한 괜찮을 것 같아요. (실제 방은 아니고 방 이름이에요 :))

의견: 새 줄에 시간을 넣는 변형이지만 올바른 정렬이 설정되지 않았습니다.

관련 정보