Я пишу свою диссертацию и хочу вставить месяц и год некоторых прошлых событий во многих местах! Как это сделать? Может ли кто-нибудь подсказать мне самый простой способ сделать это? Я совсем новичок в 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}