Разные наблюдения:

Разные наблюдения:

Я готовлю документы курса на осень, используя tufte-handoutкласс, и я хочу включить календарь, используя termcal. Поэтому я делаю это:

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

Вывод странный. Я бы выложил изображение, но по какой-то причине сейчас не могу этого сделать (следите за этой драмойздесьесли вам интересно), поэтому мне придется это описать.

  • Первая дата в календаре правильная (4 сентября); последующие даты: октябрь -25, ноябрь -55, дек. -84, янв. -114 и т. д. (Да, даты являются отрицательными числами.)
  • Ячейка за 4 сентября также содержит выражение «Осень 2017>30». Вторая ячейка (октябрь -25) содержит «Осень 2017>31» и т. д.

Похоже, что termcalвозникла проблема с линией.

\date{Fall 2017}

Разные наблюдения:

  • Если я изменю эту строку на \date{}, я получу кучу сообщений об ошибках и не увижу строку даты в титульном блоке, но календарь отобразится правильно.
  • Если я полностью удалю строку даты, в титульном блоке будет отображаться сегодняшняя дата (что мне не нужно), но календарь будет отображаться правильно.
  • Если я изменю класс документа на article, проблема полностью исчезнет.

Есть ли способ использовать dateкоманду так, как я обычно делаю, и при этом она будет termcalработать правильно? Или этот пакет просто несовместим с этим классом документа?

решение1

Обвинить termcalили tufte-common.def-- оба определяют и используют \thedate;-)

tufte-common.defустанавливает \thedateс помощью аргумента, \dateчто является плохой идеей, поскольку \the...макросы обычно следует использовать только для вывода счетчика.

termcalопределяет новый счетчик с именем date, что подразумевает автоматическое определение \thedate, однако, это делается с помощью \gdef\thedate{...}, перезаписывая старое определение на tufte-common.def.

На самом деле, tufte-common.defделает здесь что-то плохо продуманное.

Решением, вместо того чтобы менять, казалось бы, правильное поведение , termcalявляется захват оригинальной \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}

Лучшая версия с переопределением в \dateзависимости от того, загружен termcal или нет

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

введите описание изображения здесь

Связанный контент