
Ich bereite Kursunterlagen für den Herbst vor, verwende den tufte-handout
Kurs und möchte einen Kalender mit einbinden termcal
. Also mache ich Folgendes:
\documentclass{tufte-handout}
\usepackage{fontspec}
\usepackage{termcal}
\defaultfontfeatures{Mapping=tex-text}
\renewcommand{\allcapsspacing}[1]{{\addfontfeature{LetterSpace=20.0}#1}}
\renewcommand{\smallcapsspacing}[1]{{\addfontfeature{LetterSpace=5.0}#1}}
\renewcommand{\textsc}[1]{\smallcapsspacing{\textsmallcaps{#1}}}
\renewcommand{\smallcaps}[1]{\smallcapsspacing{\scshape\MakeTextLowercase{#1}}}
\renewcommand{\calprintclass}{}
\title{Course overview}
\author{English 220}
\date{Fall 2017}
\begin{document}
\maketitle
\begin{fullwidth}
\setlength{\calwidth}{6in}
\begin{calendar}{9/4/17}{10}
\calday[Monday]{\classday} % Monday
\calday[Tuesday]{\classday} % Wednesday
\calday[Wednesday]{\classday}
\calday[Thursday]{\classday} % Thursday (unnumbered)
\calday[Friday]{\classday} % Friday
\skipday\skipday % weekend (no class)
% Holidays
\options{9/21/17}{\noclassday}
\caltext{9/21/17}{No Class\\Rosh Hashanah}
% Key dates
\caltext{9/5/17}{Introductions}
\caltext{9/18/17}{Bring to class \emph{TOTC} \& \emph{The Passion}}
% Exams
\caltext{9/15/17}{Review test on 9th grade grammar \& vocab}
\caltext{9/29/17}{Quiz on vocab list 7}
\caltext{10/20/17}{Quiz on vocab lists 7--8}
\caltext{10/27/17}{Quiz on adj. \& adv. clauses}
\end{calendar}
\end{fullwidth}
\end{document}
Die Ausgabe ist bizarr. Ich würde ein Bild posten, aber aus irgendeinem Grund kann ich das im Moment nicht machen (folgen Sie diesem DramaHierfalls es Sie interessiert), also muss ich es beschreiben.
- Das erste Datum im Kalender ist korrekt (4. September); die folgenden Daten sind: -25. Oktober, -55. November, -84. Dezember, -114. Januar usw. (Ja, die Daten sind negative Zahlen.)
- Die Zelle für den 4. September enthält außerdem den Ausdruck „Herbst 2017>30“. Die zweite Zelle (Oktober -25) enthält „Herbst 2017>31“ und so weiter.
Es scheint also termcal
ein Problem mit der Leitung zu geben
\date{Fall 2017}
Verschiedene Beobachtungen:
- Wenn ich diese Zeile in ändere
\date{}
, erhalte ich eine Reihe von Fehlermeldungen und keine Datumszeile in meinem Titelblock, aber der Kalender wird korrekt angezeigt. - Wenn ich die Datumszeile vollständig lösche, enthält der Titelblock zwar das heutige Datum (was ich nicht möchte), der Kalender wird jedoch korrekt angezeigt.
- Wenn ich die Dokumentklasse in ändere
article
, verschwindet das Problem vollständig.
Gibt es eine Möglichkeit, den date
Befehl wie gewohnt zu verwenden und trotzdem termcal
ordnungsgemäß zu funktionieren? Oder ist dieses Paket einfach nicht mit dieser Dokumentklasse kompatibel?
Antwort1
Schuld termcal
oder tufte-common.def
-- beides definieren und verwenden \thedate
;-)
tufte-common.def
Sets \thedate
durch Verwendung des Arguments \date
ist keine gute Idee, da \the...
Makros normalerweise nur für die Zählerausgabe verwendet werden sollten.
termcal
definiert einen neuen Zähler mit dem Namen date
, was die automatische Definition von impliziert \thedate
. Dies geschieht jedoch mit \gdef\thedate{...}
, wobei die alte Definition durch überschrieben wird tufte-common.def
.
Tatsächlich tufte-common.def
wird hier etwas unkonventionell vorgegangen.
Anstatt das scheinbar richtige Verhalten von zu ändern, besteht eine Lösung darin, den ursprünglichen von entworfenen Befehl termcal
zu übernehmen , bevor dieser in Aktion tritt, beispielsweise mit und anstelle von zu sagen , was das System durcheinanderbringt.\date
LaTeX
\documentclass
\let\latexdate\date
\latexdate{Fall 2017}
\date{Fall 2017}
\let\latexdate\date
\documentclass{tufte-handout}
\usepackage{fontspec}
\usepackage{termcal}
\defaultfontfeatures{Mapping=tex-text}
\renewcommand{\allcapsspacing}[1]{{\addfontfeature{LetterSpace=20.0}#1}}
\renewcommand{\smallcapsspacing}[1]{{\addfontfeature{LetterSpace=5.0}#1}}
\renewcommand{\textsc}[1]{\smallcapsspacing{\textsmallcaps{#1}}}
\renewcommand{\smallcaps}[1]{\smallcapsspacing{\scshape\MakeTextLowercase{#1}}}
\renewcommand{\calprintclass}{}
\title{Course overview}
\author{English 220}
\latexdate{Fall 2017}
\begin{document}
\maketitle
\begin{fullwidth}
\setlength{\calwidth}{6in}
\begin{calendar}{9/4/17}{10}
\calday[Monday]{\classday} % Monday
\calday[Tuesday]{\classday} % Wednesday
\calday[Wednesday]{\classday}
\calday[Thursday]{\classday} % Thursday (unnumbered)
\calday[Friday]{\classday} % Friday
\skipday\skipday % weekend (no class)
% Holidays
\options{9/21/17}{\noclassday}
\caltext{9/21/17}{No Class\\Rosh Hashanah}
% Key dates
\caltext{9/5/17}{Introductions}
\caltext{9/18/17}{Bring to class \emph{TOTC} \& \emph{The Passion}}
% Exams
\caltext{9/15/17}{Review test on 9th grade grammar \& vocab}
\caltext{9/29/17}{Quiz on vocab list 7}
\caltext{10/20/17}{Quiz on vocab lists 7--8}
\caltext{10/27/17}{Quiz on adj. \& adv. clauses}
\end{calendar}
\end{fullwidth}
\end{document}
Bessere Version mit Neudefinition, \date
abhängig davon, ob Termcal geladen ist oder nicht
\documentclass{tufte-handout}
\usepackage{fontspec}
\usepackage{termcal}
\makeatletter
\providecommand\tuftedate{}
\@ifpackageloaded{termcal}{%
\renewcommand{\date}[1]{%
\gdef\@date{#1}%
\begingroup%
% TODO store contents of \thanks command
\renewcommand{\thanks}[1]{}% swallow \thanks contents
\protected@xdef\tuftedate{#1}%
\endgroup%
}{%
% Do nothing else, there's no need to redefine \date
}
}
\makeatother
\defaultfontfeatures{Mapping=tex-text}
\renewcommand{\allcapsspacing}[1]{{\addfontfeature{LetterSpace=20.0}#1}}
\renewcommand{\smallcapsspacing}[1]{{\addfontfeature{LetterSpace=5.0}#1}}
\renewcommand{\textsc}[1]{\smallcapsspacing{\textsmallcaps{#1}}}
\renewcommand{\smallcaps}[1]{\smallcapsspacing{\scshape\MakeTextLowercase{#1}}}
\renewcommand{\calprintclass}{}
\title{Course overview}
\author{English 220}
\date{Fall 2017}
\begin{document}
\maketitle
\begin{fullwidth}
\setlength{\calwidth}{6in}
\begin{calendar}{9/4/17}{10}
\calday[Monday]{\classday} % Monday
\calday[Tuesday]{\classday} % Wednesday
\calday[Wednesday]{\classday}
\calday[Thursday]{\classday} % Thursday (unnumbered)
\calday[Friday]{\classday} % Friday
\skipday\skipday % weekend (no class)
% Holidays
\options{9/21/17}{\noclassday}
\caltext{9/21/17}{No Class\\Rosh Hashanah}
% Key dates
\caltext{9/5/17}{Introductions}
\caltext{9/18/17}{Bring to class \emph{TOTC} \& \emph{The Passion}}
% Exams
\caltext{9/15/17}{Review test on 9th grade grammar \& vocab}
\caltext{9/29/17}{Quiz on vocab list 7}
\caltext{10/20/17}{Quiz on vocab lists 7--8}
\caltext{10/27/17}{Quiz on adj. \& adv. clauses}
\end{calendar}
\end{fullwidth}
\end{document}