Ich schreibe meine Abschlussarbeit und möchte an vielen Stellen Monat und Jahr einiger vergangener Ereignisse einfügen! Wie geht das? Kann mir jemand einen möglichst einfachen Weg vorschlagen? Ich bin ein absoluter LaTeX-Anfänger. Und bitte verzeihen Sie mir auch mein Englisch.
Ich habe diese Ereignisse in einer Textdatei aufgelistet. Beispielsweise wurde die Supraleitung im April 1991 von Heike Kamerlingh Onnes entdeckt.
Ich erwarte lediglich eine Ausgabe im Format
April 1991
Antwort1
Sie könnten einfach ein Makro definieren, das die relevanten Daten speichert. Sie könnten beispielsweise verwenden, \newcommand\questionDay{Monday}
um den Tag zu speichern, an dem Sie diese Frage gestellt haben. Dann könnten Sie \questionDay
in Ihrem Absatz verwenden, wo immer Sie auf diesen Tag verweisen möchten. Beachten Sie jedoch, dass Leerzeichen nach Makronamen ignoriert werden. Wenn Sie also ein Leerzeichen wünschen, \questionDay
können Sie stattdessen verwenden \questionDay{}
.
Ein anderer Ansatz könnte darin bestehen, die Daten in einer Datenstruktur zu speichern und diese abzurufen. Im Folgenden wird eine solche Datenstruktur implementiert, die Sie initialisieren können, indem Sie einen Makronamen und eine Liste von key=value
Paaren angeben, die Eigenschaften für diesen Makronamen speichern. Wenn Sie das Makro dann verwenden, akzeptiert es ein Argument, das eine der zuvor gespeicherten Eigenschaften ist, und setzt den Wert dieser Eigenschaft.
Dieses Beispiel zeigt beide Methoden:
\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}