Как просто вставить месяц и год в середину абзаца?

Как просто вставить месяц и год в середину абзаца?

Я пишу свою диссертацию и хочу вставить месяц и год некоторых прошлых событий во многих местах! Как это сделать? Может ли кто-нибудь подсказать мне самый простой способ сделать это? Я совсем новичок в LaTeX. И еще, пожалуйста, простите меня за мой английский.

У меня эти события перечислены в текстовом файле. Например, сверхпроводимость была открыта в апреле 1991 года Хайке Камерлинг-Оннесом.

Я просто ожидаю вывод в формате

Апрель 1991 г.

решение1

Вы можете просто определить макрос, который сохраняет соответствующие данные, например, вы можете использовать его \newcommand\questionDay{Monday}для сохранения дня, в который вы задали этот вопрос. Затем вы можете использовать его \questionDayв своем абзаце везде, где хотите сослаться на этот день. Однако имейте в виду, что пробелы после имен макросов игнорируются, поэтому, если вы хотите поставить пробел, \questionDayвы можете использовать \questionDay{}вместо этого .

Другой подход может заключаться в том, чтобы хранить данные в некоторой структуре данных и извлекать ее. Ниже реализуется такая структура данных, которую вы можете инициализировать, указав имя макроса и список key=valueпар, которые хранят свойства для этого имени макроса. Когда вы затем используете макрос, он примет один аргумент, являющийся одним из свойств, сохраненных ранее, и он наберет значение этого свойства.

В этом примере показаны оба метода:

\documentclass[]{article}

% basic approach
\newcommand\questionday{9th}
\newcommand\questionDay{Monday}
\newcommand\questionyear{2020}
\newcommand\questionmonth{November}

\usepackage{xparse}

% property list based approach
\ExplSyntaxOn
\msg_new:nnn { Bhargav } { already-defined }
  { #1 ~ `#2' ~ is ~ already ~ defined. }
\msg_new:nnn { Bhargav } { unknown~property }
  { The ~ property ~ `#2' ~ isn't ~ found ~ for ~ `#1'. }
\tl_new:N \l_Bhargav_tmp_tl
\NewDocumentCommand \newevent { m m }
  {
    \prop_if_exist:cTF { c_Bhargav_event_ \token_to_str:N #1 _prop }
      {
        \msg_error:nnxx { Bhargav } { already-defined }
          { The ~ property ~ list ~ for } { \token_to_str:N #1 }
      }
      {
        \NewDocumentCommand #1 { m }
          {
            \group_begin:
              \prop_get:cnN
                { c_Bhargav_event_ \token_to_str:N #1 _prop }
                { ##1 }
                \l_Bhargav_tmp_tl
              \quark_if_no_value:NTF \l_Bhargav_tmp_tl
                {
                  \msg_error:nnxx { Bhargav } { unknown~property }
                    { \token_to_str:N #1 } { \exp_not:n {##1} }
                }
                { \l_Bhargav_tmp_tl }
            \group_end:
          }
        \prop_const_from_keyval:cn
          { c_Bhargav_event_ \token_to_str:N #1 _prop }
          {#2}
      }
  }
\ExplSyntaxOff

% defining a new property list
\newevent\deathfreddie
  {%
    year=1991,
    month=11,
    day=24,
    Month=November,
  }

\begin{document}
Bhargav Rajyaguru asked a question on \questionDay{} the \questionday{} of
\questionmonth, \questionyear.

It was very sad that Freddie Mercury died on
\deathfreddie{year}-\deathfreddie{month}-\deathfreddie{day}. That was the
saddest \deathfreddie{Month} in \deathfreddie{year}.
\end{document}

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