
일정 클래스에서 생성한 시간표의 각 이벤트에 대한 기간을 자동으로 인쇄하려면 어떻게 해야 합니까? 예를 들면 다음과 같습니다.
\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}
시간은 위치 옆에 추가됩니다. 방이 너무 길지 않은 한 괜찮을 것 같아요. (실제 방은 아니고 방 이름이에요 :))
의견: 새 줄에 시간을 넣는 변형이지만 올바른 정렬이 설정되지 않았습니다.