13

I teach classes and in my notes I have "Fall 2015" during fall semester and "Spring 2016" during Spring semester. I can use

\the\year

for the year. But is there something like

\the\season

for Fall and Spring? And if so, how can I customize which months define the semester?

2
  • year is a count register, but season is a range of counter values actually
    – user31729
    Feb 12, 2016 at 19:22
  • 4
    Of course, all this breaks down if you want to get ahead of things and produce some notes for spring term in December, for instance. Seems that something like \newcommand\term{Spring 2015} is simple and easily changed for next term. Sometimes over-automation creates more work than it alleviates.
    – dedded
    Feb 12, 2016 at 20:46

5 Answers 5

15

Without any extra package and providing support for northern or southern hemisphere:

\documentclass{article}

\newif\ifnorthernhemisphere
\northernhemispheretrue

\newcommand{\season}{%
  \ifnorthernhemisphere
  \ifcase\month
  \or Winter
  \or Winter
  \or Spring
  \or Spring
  \or Spring
  \or Summer
  \or Summer
  \or Summer
  \or Fall
  \or Fall
  \or Fall
  \or Winter
  \fi
  \else
  \ifcase\month
  \or Summer
  \or Summer
  \or Fall
  \or Fall
  \or Fall
  \or Winter
  \or Winter
  \or Winter
  \or Spring
  \or Spring
  \or Spring
  \or Summer
  \fi
  \fi
}



\begin{document}
Northern hemisphere

\the\month\ \season

\month=5
\the\month\ \season

\month=9
\the\month\ \season

Southern hemisphere

\month=2
\northernhemispherefalse
\the\month\ \season


\month=5
\the\month\ \season

\month=9
\the\month\ \season

\end{document}

enter image description here

Update Here's a variant with optional argument:

\documentclass{article}

\newif\ifnorthernhemisphere
\northernhemispheretrue

\newcommand{\season}[1][\month]{%
  \ifnorthernhemisphere
  \ifcase#1
  \or Winter
  \or Winter
  \or Spring
  \or Spring
  \or Spring
  \or Summer
  \or Summer
  \or Summer
  \or Fall
  \or Fall
  \or Fall
  \or Winter
  \fi
  \else
  \ifcase#1
  \or Summer
  \or Summer
  \or Fall
  \or Fall
  \or Fall
  \or Winter
  \or Winter
  \or Winter
  \or Spring
  \or Spring
  \or Spring
  \or Summer
  \fi
  \fi
}



\begin{document}
Northern hemisphere

\season


\season[5]


\season[9]

Southern hemisphere


\northernhemispherefalse
\season

\season[5]

\season[9]

\end{document}

**Another version -- with xparse and expl3 features:

\documentclass{article}


\usepackage{xparse}

\ExplSyntaxOn

\seq_new:N \g_default_spring_semester_seq
\seq_new:N \g_default_fall_semester_seq

\seq_new:N \g_spring_semester_seq
\seq_new:N \g_fall_semester_seq

\seq_set_from_clist:Nn \g_default_spring_semester_seq {1,2,3,4,5,6}

\NewDocumentCommand{\SetSpringSemesterMonths}{m}{%
  \seq_set_from_clist:Nn \g_spring_semester_seq {#1}
}

\NewDocumentCommand{\SetFallSemesterMonths}{m}{%
  \seq_set_from_clist:Nn \g_fall_semester_seq {#1}
}

\SetSpringSemesterMonths{1,2,3,4,5,6}
\SetFallSemesterMonths{7,8,9,10,11,12}

\NewDocumentCommand{\season}{}{%
  \seq_if_empty:NTF \g_spring_semester_seq 
  {\seq_set_eq:NN \l_tmpa_seq \g_default_spring_semester_seq}
  {\seq_set_eq:NN \l_tmpa_seq \g_spring_semester_seq}
  \seq_if_empty:NTF \g_fall_semester_seq {\seq_set_eq:NN \l_tmpb_seq \g_default_fall_semester_seq}
  {\seq_set_eq:NN \l_tmpb_seq \g_fall_semester_seq}
  \seq_if_in:NVTF \l_tmpa_seq {\month} {
    Spring%
  }{%
    \seq_if_in:NVTF \l_tmpb_seq {\month} {%
      Fall%
    }{}
  }
}

\ExplSyntaxOff

\begin{document}

\season

\end{document}
2
10

Here is a solution

\documentclass{article}
\begin{document}
\ifnum\month<7
Spring
\else
Fall
\fi

\month=11
\ifnum\month<7
Spring
\else
Fall
\fi
\end{document}
3
  • This does assume that there's only Spring or Fall? ;-)
    – user31729
    Feb 12, 2016 at 20:33
  • 6
    This is what the OP ask for :-)
    – touhami
    Feb 12, 2016 at 20:39
  • Oh my bad, it's in the title :/
    – user31729
    Feb 12, 2016 at 20:41
9

Update: Crazier code, no properties list! :)

\documentclass{article}

\usepackage{xparse}

\ExplSyntaxOn
\clist_new:N \g_season_clist
\bool_new:N \g_season_northenhemisphere_bool
\bool_gset_false:N \g_season_northenhemisphere_bool

\NewDocumentCommand { \getseason } { m } {
   \clist_item:Nn \g_season_clist {
    \int_mod:nn {
      \int_div_round:nn { #1 - 1 } { 3 } + \bool_if:NTF \g_season_northenhemisphere_bool { 3 } { 1 } 
    } { 4 } + 1
  }
}

\NewDocumentCommand { \setseasons } { m } {
  \clist_gset:Nn \g_season_clist { #1 }
}

\NewDocumentCommand { \northenhemisphere } { } {
  \bool_gset_true:N \g_season_northenhemisphere_bool
}

\NewDocumentCommand { \southernhemisphere } { } {
  \bool_gset_false:N \g_season_northenhemisphere_bool
}
\ExplSyntaxOff

\begin{document}

\setseasons{Spring,Summer,Fall,Winter}

\northenhemisphere
In the Northen Hemisphere, we have \getseason{\month}.

\southernhemisphere
In the Southern Hemisphere, we have \getseason{\month}.

\end{document}

Original attempt: Crazy code ahead! :)

\documentclass{article}

\usepackage{xparse}

\ExplSyntaxOn
\clist_new:N \g_season_clist
\prop_new:N \g_season_prop

\prop_gput:Nnn \g_season_prop { 12 } { 4 }
\prop_gput:Nnn \g_season_prop { 1 } { 4 }
\prop_gput:Nnn \g_season_prop { 2 } { 4 }
\prop_gput:Nnn \g_season_prop { 3 } { 1 }
\prop_gput:Nnn \g_season_prop { 4 } { 1 }
\prop_gput:Nnn \g_season_prop { 5 } { 1 }
\prop_gput:Nnn \g_season_prop { 6 } { 2 }
\prop_gput:Nnn \g_season_prop { 7 } { 2 }
\prop_gput:Nnn \g_season_prop { 8 } { 2 }
\prop_gput:Nnn \g_season_prop { 9 } { 3 }
\prop_gput:Nnn \g_season_prop { 10 } { 3 }
\prop_gput:Nnn \g_season_prop { 11 } { 3 }

\bool_new:N \g_season_northenhemisphere_bool
\bool_gset_false:N \g_season_northenhemisphere_bool

\NewDocumentCommand { \getseason } { m } {
   \clist_item:Nn \g_season_clist {
    \int_mod:nn {
      \prop_item:Nn \g_season_prop { #1 } + \bool_if:NTF \g_season_northenhemisphere_bool { 3 } { 1 } 
    } { 4 } + 1
  }
}

\NewDocumentCommand { \setseasons } { m } {
  \clist_gset:Nn \g_season_clist { #1 }
}

\NewDocumentCommand { \northenhemisphere } { } {
  \bool_gset_true:N \g_season_northenhemisphere_bool
}

\NewDocumentCommand { \southernhemisphere } { } {
  \bool_gset_false:N \g_season_northenhemisphere_bool
}
\ExplSyntaxOff

\begin{document}

\setseasons{Spring,Summer,Fall,Winter}

\northenhemisphere
In the Northen Hemisphere, we have \getseason{\month}.

\southernhemisphere
In the Southern Hemisphere, we have \getseason{\month}.

\end{document}

The output:

Quack

One could add a babel hook to setup seasons names according to the current language or even use datetime to format any date, like, for example, \season\today. Hope it helps! :)

10
  • 10
    I should be writing my thesis instead, I should be writing my thesis instead, I should be writing my thesis instead, I should be writing my thesis instead... Feb 12, 2016 at 20:56
  • Ah, the solution from the southern hemisphere :-P
    – user31729
    Feb 12, 2016 at 20:57
  • @Christian: ducks do understand about seasons. :) Feb 12, 2016 at 20:58
  • And Black Foresters know how to upvote ... and now back to your thesis :-P
    – user31729
    Feb 12, 2016 at 20:59
  • 1
8

What about:

\documentclass{article}
\usepackage{ifthen}

\begin{document}

The term now is: \ifthenelse{\month<6}{Spring}{Fall} 

\end{document}

With the ifthen package you can build quite complex conditional text.

Obviously you have to adapt it to your case, but you can nest \ifthenelse and even use \month or \day in it to fine-tune the result.

The term now is: \ifthenelse{\month<9}{%
    \ifthenelse{\month<6}{Spring}{Summer}}%
    {Fall}

(this last suppose Spring term for Jan to May, Fall from Sep to Dec, and the rest Summer. YMMV)

5
  • The problem is that the spring occurs in different months in North/South hemisphere.
    – Sigur
    Feb 12, 2016 at 19:24
  • 2
    @Sigur: That's hard to track from LaTeX unless there are geolocation tools in LaTeX ;-)
    – user31729
    Feb 12, 2016 at 19:27
  • @ChristianHupfer And what about TeX? You used TeX primitives in your answer, this has no connection to LaTeX.
    – wipet
    Feb 12, 2016 at 19:36
  • @wipet: Fair point. I know, you find LaTeX horrible, especially mixing TeX and LaTeX, but in this case I found TeX much simpler. If I would kick out the LaTeX specific commands it would work with TeX too, I suppose
    – user31729
    Feb 12, 2016 at 19:43
  • The title only asks for this two mode output, but your test should be month<7. Feb 17, 2016 at 8:08
1

A biblatex solution, for when there are multiple or archival items.

season

Treating the season as part of the publication (meta)data.

Localisation can also come into play. (Note that not all babel/polyglossia languages define season-related strings (yet).)

MWE

\begin{filecontents*}[overwrite]{\jobname.bib}

@misc{notesset1,
  title = {Lecture Notes Set 1}, 
  date = {2020-23},
    }
% season (21=spring, 22=summer, 23=autumn, 24=winter)

@misc{notesset2,
  title = {Lecture Notes Set 2}, 
  date = {2021-21},
    }

@misc{notesset3,
  title = {Lecture Notes Set 3}, 
  date = {2021-22},
    }   

@misc{notesset4,
  title = {Lektur 1}, 
  date = {2021-22},
  langid = {ngerman},
%  language={langgerman},
    }   


@misc{notesset5,
  title = {Διάλεξη 1}, 
  date = {2021-22},
  langid = {greek},
  language={langgreek},
    }   

@misc{notesset5a,
  title = {Conferenza 1}, 
  date = {2021-22},
  langid = {italian},
  language={langitalian},
    }   

\end{filecontents*}




\documentclass[12pt]{article}
\usepackage[english]{babel}
\usepackage{csquotes}
\usepackage[svgnames]{xcolor}
\usepackage{fontspec}
\babelprovide[import, onchar=ids fonts]{greek}
\babelfont[greek]{rm}
          [Color=DarkGreen ,
          ]{Noto Serif}

\usepackage[style=authoryear,
dateabbrev=false,% full name of season
language=autocite,%pick up the langid language, for citations
autolang=other,%wrap with otherlanguage environment and translate date-related names according to the langid
]{biblatex}

\addbibresource{\jobname.bib}

\DeclareListFormat{language}{\ifbibstring{#1}{\bibstring{#1}\addcolon}{#1}}

\DeclareCiteCommand{\citeseasonall}
{}
{\textmd{\printlist{language}}
\printfield{title}\addcomma\addspace\printdate}
{}
{}

\DeclareCiteCommand{\citeseasontitle}
{}
{\printfield{title}
}
{}
{}

\DeclareCiteCommand{\citeseason}
{}
{\printdate}
{}
{}


\DefineBibliographyStrings{greek}{%
  spring    = {άνοιξη},
  summer  = {καλοκαίρι},
  autumn   = {φθινόπωρο},
  winter     = {χειμώνας},
  langgreek = {Ελληνικά},
}

\DefineBibliographyStrings{italian}{%
  spring    = {primavera},
  summer  = {estate},
  autumn   = {autunno},
  winter     = {inverno},
  langitalian = {italiano},
}




%-----------------------------

\title{\citeseasontitle{notesset1}}
\author{}
\date{\citeseason{notesset1}}
%------------------
\begin{document}
\maketitle

\section*{Overview}
\begin{itemize}
\item \textbf{\citeseasonall{notesset1}} covers introductory material.
\item \textbf{\citeseasonall{notesset2}} advances to the next topic.
\item \textbf{\citeseasonall{notesset3}} covers the extended course.
\item German: \textbf{\citeseasonall{notesset4}} is the xyz version. 
\item Greek: \textbf{\citeseasonall{notesset5}} is the abc version. 
\item Italian: \textbf{\citeseasonall{notesset5a}} is the abc version. 
\end{itemize}
\end{document}

Automating

A more generalised solution, using a custom code number.

Biber can do the four seasons using the date field when the month is set to certain values:

  my %
    seasons = ( 21 => 'spring',
                  22 => 'summer',
                  23 => 'autumn',
                  24 => 'winter' );
                  
...\texlive\2020
\texmf-dist
\source
\bibtex
\biber
\biblatex-biber.tar
\biblatex-biber
\biblatex-biber-2.15
\lib
\Biber
\Date                  
format.pm

Extending that idea, but using instead a custom field (term) processed via macros at Biblatex/Latex-level, University Terms and Court Terms can be done:

Example formats

Illustrating the use of the xsv field type and associated \forcsvfield command, allowing customised sequencing of fields on a per-bibentry basis (and the expl3 split function); and formatting hooks within the citation command, allowing the changing of the citation format mid-document; and bibstrings for localisation. Plus an example of using a field as an input argument to arbitrary code using \usefield (here, an image name).

An exercise in what could be done.

Use-case: sets or compendia, or other bulk volumes?

Terms can always be keyed in manually if there are only a few, or the issue field of @article could be used.

MWE



\begin{filecontents*}[overwrite]{\jobname.bib}

@misc{notesset1,
  title = {Lecture Notes Set 1}, 
  date = {2020-23},
    }
% season (21=spring, 22=summer, 23=autumn, 24=winter)

@misc{notesset2,
  title = {Lecture Notes Set 2}, 
  date = {2021-21},
    }

@misc{notesset3,
  title = {Lecture Notes Set 3}, 
  date = {2021-22},
    }   

@misc{notesset4,
  title = {Lektur 1}, 
  date = {2021-22},
  langid = {ngerman},
%  language={langgerman},
    }   


@misc{notesset5,
  title = {Διάλεξη 1}, 
  date = {2021-22},
  langid = {greek},
  language={langgreek},
    }   

@misc{notesset5a,
  title = {Conferenza 1}, 
  date = {2021-22},
  langid = {italian},
  language={langitalian},
    }   
@misc{testutag,
  title = {Test Titleuta Greek 31}, 
  term = {2021-31},
  langid = {greek},
%  language={langgreek},
    }   

@misc{testutha,
  title = {Test Titleut hilary}, 
  term = {2021-hilaryterm},
    }   
@misc{testuta,
  title = {Test Titleuta 31}, 
  term = {2021-31},
  author = {A Author},
  authorposition = {Adjunct Professor of Theoretics},
  university = {University of U},
  college = {College of C},
  school = {School of S},
  faculty = {Faculty of F},
  department = {Department of D},
  location = {Mars and The Moon and Mimas},
  image={example-image-a},
  sequence = {department,faculty,university,location,image},
  sequenceta = {title,term,author,authorposition},
    }   


@misc{testutb,
  title = {Test Titleutb 32}, 
  term = {2021-32},
  author = {zz},
  authorposition = {zz},
  university = {University of V},
  college = {College of D},
  school = {School of T},
  faculty = {Faculty of G},
  department = {Department of E},
  sequence = {department,college,university},
    }   
@misc{testutc,
  title = {Test Titleutc 33}, 
  term = {2021-33},
  courtlist = {Civil List},
  courtdivision = {Commercial Division},
  courtcourt = {Court of Appeal},
%  courtbench = {},
  courtname = {Supreme Court of XYZ},
  sequence = {courtlist,courtdivision,courtname},
    }   
@misc{testutd,
  title = {Test Titleutd 34}, 
  term = {2021-34},
%  courtlist = {},
%  courtdivision = {},
%  courtcourt = {},
  courtbench = {Full Court},
  courtname = {Supreme Court of XYZ},
  sequence = {courtbench,courtname},
    }   
@misc{testute,
  title = {Test Titleute 35}, 
  term = {2021-35},
    }   
@misc{testutf,
  title = {Test Titleutf 36}, 
  term = {2021-36},
    }   
@misc{testutg,
  title = {Test Titleutg 37}, 
  term = {2021-37},
    }   
    

@misc{testta,
  title = {Test Titleta 41}, 
  term = {2021-41},
    }   
@misc{testtb,
  title = {Test Titletb 42}, 
  term = {2021-42},
    }   
@misc{testtc,
  title = {Test Titletc 43}, 
  term = {2021-43},
    }   


@misc{testsa,
  title = {Test Titlesema 51}, 
  term = {2021-51},
    }   
@misc{testsb,
  title = {Test Titlesemb 52}, 
  term = {2021-52},
    }   
@misc{tests1,
  title = {Test Titlesem1 53}, 
  term = {2021-53},
    }   
@misc{tests2,
  title = {Test Titlesem2 54}, 
  term = {2021-54},
    }   


@misc{testsp,
  title = {Test Titlesp 61}, 
  term = {2021-61},
    }   
@misc{testsu,
  title = {Test Titlesu 62}, 
  term = {2021/2022-62},
    }   
@misc{testau,
  title = {Test Titleau 63}, 
  term = {2022-63},
    }   
@misc{testwi,
  title = {Test Titlewi 64}, 
  term = {2022-64},
    }   
\end{filecontents*}



\begin{filecontents*}[overwrite]{term.dbx}

\DeclareDatamodelFields[type=field, datatype=literal]{term,
  authorposition,
  university,
  college,
  school,
  faculty,
  department,
  courtlist,
  courtdivision,
  courtcourt,
  courtname,
  courtbench,  
  image,
}

\DeclareDatamodelFields[type=field, format=xsv, datatype=literal]{sequence,
sequenceta,
}

%\DeclareDatamodelFields[type=list, datatype=literal]{location,
%}

\DeclareDatamodelEntryfields{term,
  authorposition,
  university,
  college,
  school,
  faculty,
  department,
  sequence,
  courtlist,
  courtdivision,
  courtcourt,
  courtname,
  courtbench,
  sequenceta,
%  location,
 image,
  }

\end{filecontents*}


\documentclass[12pt]{article}
\usepackage[english]{babel}
\usepackage{csquotes}
\usepackage[svgnames]{xcolor}
\usepackage{fontspec}
\babelprovide[import, onchar=ids fonts]{greek}
\babelfont[greek]{rm}
          [Color=DarkGreen ,
          ]{Noto Serif}

\usepackage{xparse}
\usepackage{graphicx}


\ExplSyntaxOn




%term
\DeclareDocumentCommand { \fcompareb } { m } 
{
\tl_set:Nn \l_my_tl { #1 }
\seq_set_split:NnV \l_tmpa_seq { - }  \l_my_tl 
\seq_get_right:NN \l_tmpa_seq \l_myright_tlv
\int_compare:nNnT { \l_myright_tlv } = { 31 } { \bibstring{hilaryterm} }
\int_compare:nNnT { \l_myright_tlv } = { 32 } { \bibstring{epiphanyterm} }
\int_compare:nNnT { \l_myright_tlv } = { 33 } { \bibstring{lentterm} }
\int_compare:nNnT { \l_myright_tlv } = { 34 } { \bibstring{candlemasterm} }
\int_compare:nNnT { \l_myright_tlv } = { 35 } { \bibstring{easterterm} }
\int_compare:nNnT { \l_myright_tlv } = { 36 } { \bibstring{trinityterm} }
\int_compare:nNnT { \l_myright_tlv } = { 37 } { \bibstring{michaelmasterm} }
\int_compare:nNnT { \l_myright_tlv } = { 41 } { \bibstring{firstterm} }
\int_compare:nNnT { \l_myright_tlv } = { 42 } { \bibstring{secondterm} }
\int_compare:nNnT { \l_myright_tlv } = { 43 } { \bibstring{thirdterm} }
\int_compare:nNnT { \l_myright_tlv } = { 51 } { \bibstring{firstsemester} }
\int_compare:nNnT { \l_myright_tlv } = { 52 } { \bibstring{secondsemester} }
\int_compare:nNnT { \l_myright_tlv } = { 53 } { \bibstring{semesterone} }
\int_compare:nNnT { \l_myright_tlv } = { 54 } { \bibstring{semestertwo} }
\int_compare:nNnT { \l_myright_tlv } = { 61 } { \bibstring{springterm} }
\int_compare:nNnT { \l_myright_tlv } = { 62 } { \bibstring{summerterm} }
\int_compare:nNnT { \l_myright_tlv } = { 63 } { \bibstring{autumnterm} }
\int_compare:nNnT { \l_myright_tlv } = { 64 } { \bibstring{winterterm} }
}

%year
\DeclareDocumentCommand { \fcomparec } { m } 
{
\tl_set:Nn \l_my_tl { #1 }
\seq_set_split:NnV \l_tmpa_seq { - }  \l_my_tl 
\seq_get_left:NN \l_tmpa_seq \l_myleft_tlv
\tl_use:N \l_myleft_tlv 

}




\ExplSyntaxOff


\usepackage[style=authoryear,
dateabbrev=false,% full name of season
language=autocite,%pick up the langid language, for citations
autolang=other,%wrap with otherlanguage environment and translate date-related names according to the langid
datamodel=term,
]{biblatex}


\NewBibliographyString{hilaryterm,
  epiphanyterm,
  lentterm,
  candlemasterm,
  easterterm,
  trinityterm,
  michaelmasterm,
  firstterm,
  secondterm,
  thirdterm,
  firstsemester,
  secondsemester,
  semesterone,
  semestertwo,
  springterm,
  summerterm,
  autumnterm,
  winterterm,
}

\DefineBibliographyStrings{english}{%
% 30
  hilaryterm = {Hilary Term},% jan-mar/apr
  epiphanyterm = {Epiphany Term},
  lentterm    = {Lent Term},%feb-apr
  candlemasterm = {Candlemas Term},
  easterterm = {Easter Term},%apr-may
  trinityterm = {Trinity Term},% apr-jun/jun-jul
  michaelmasterm = {Michaelmas Term},% oct-dec
%  40
  firstterm  = {First Term},
  secondterm  = {Second Term},
  thirdterm  = {Third Term},
% 50
  firstsemester   = {First Semester},
  secondsemester   = {Second Semester},
  semesterone   = {Semester One},
  semestertwo   = {Semester Two},
% 60
  springterm = {Spring Term},
  summerterm = {Summer Term},
  autumnterm = {Autumn Term},
  winterterm = {Winter Term},
}


\addbibresource{\jobname.bib}

\newcommand\insertpic[1]{\includegraphics[width=1cm]{#1}}

%==============================
\newcommand\seqsep{\addcomma\addspace}
\newcommand\myseq[1]{\seqsep%
\ifstrequal{#1}{location}{\printlist{location}}{%
\ifstrequal{#1}{author}{\printnames[authorrev]{#1}}{%
\ifstrequal{#1}{image}{\usefield{\insertpic}{image}}{%\usefield{\includegraphics[scale=0.1]}{image}
\ifstrequal{#1}{term}{\printterm}{\printfield{#1}}%
}}}%
}



\DeclareFieldFormat{sequence}{
    \forcsvfield{\myseq}{sequence}
}   
%
\newcounter{seqtacounter}
\newcommand\seqtazero{\setcounter{seqtacounter}{0}}
\newcommand\seqtastep{\stepcounter{seqtacounter}}

%title author
\newcommand\seqsepta{\addcomma\addspace}

\newcommand\myseqta[1]{%
\seqtastep%
\ifnum\value{seqtacounter}=1\relax\else\seqsepta\fi%
\ifstrequal{#1}{location}{\printlist{location}}{}%
\ifstrequal{#1}{author}{\printnames[authorrev]{#1}}{}%
\ifstrequal{#1}{term}{\printterm}{\printfield{#1}}%
}

\DeclareFieldFormat{sequenceta}{
    \seqtazero
    \forcsvfield{\myseqta}{sequenceta}
}

%
\DeclareListFormat{language}{\ifbibstring{#1}{\bibstring{#1}\addcolon}{#1}}



\DeclareCiteCommand{\citeseasonall}
{}
{\textmd{\printlist{language}}
\printfield{title}\addcomma\addspace
\printdate}
{}
{}

\newcommand\uuformat[1]{#1}
\newcommand\cuformat[1]{#1}
\newcommand\suformat[1]{#1}
\newcommand\fuformat[1]{#1}
\newcommand\duformat[1]{#1}

\newcommand\postuuformat{}
\newcommand\postcuformat{}
\newcommand\postsuformat{}
\newcommand\postfuformat{}
\newcommand\postduformat{}


%  courtlist,
%  courtdivision,
%  courtcourt,
%  courtname,
%  courtbench,
\newcommand\lcformat[1]{#1}
\newcommand\dcformat[1]{#1}
\newcommand\ccformat[1]{#1}
\newcommand\ncformat[1]{#1}
\newcommand\bcformat[1]{#1}

\newcommand\postlcformat[1]{#1}
\newcommand\postdcformat[1]{#1}
\newcommand\postccformat[1]{#1}
\newcommand\postncformat[1]{#1}
\newcommand\postbcformat[1]{#1}



\DeclareFieldFormat{plain}{#1}
\DeclareFieldFormat{plainb}{\fcompareb{#1}}
\DeclareFieldFormat{plainc}{\fcomparec{#1}}
\DeclareFieldFormat{authorposition}{#1}

\DeclareFieldFormat{university}{\uuformat{#1}\postuuformat}
\DeclareFieldFormat{college}{\cuformat{#1}\postcuformat}
\DeclareFieldFormat{school}{\suformat{#1}\postsuformat}
\DeclareFieldFormat{faculty}{\fuformat{#1}\postfuformat}
\DeclareFieldFormat{department}{\duformat{#1}\postduformat}

%
%  courtlist,
%  courtdivision,
%  courtcourt,
%  courtname,
%  courtbench,
\DeclareFieldFormat{courtlist}{\lcformat{#1}\postlcformat}
\DeclareFieldFormat{courtdivision}{\dcformat{#1}\postdcformat}
\DeclareFieldFormat{courtcourt}{\ccformat{#1}\postccformat}
\DeclareFieldFormat{courtname}{\ncformat{#1}\postncformat}
\DeclareFieldFormat{courtbench}{\bcformat{#1}\postbcformat}


\newcommand\printterm{\seqsepta\printfield[plainb]{term}
\addcomma\addspace\printfield[plainc]{term}}


\DeclareNameFormat{authorrev}{%
\ifthenelse{\value{listcount}=1}
{\ifdefvoid{\namepartgiven}{}{%
 \namepartgiven\space}\namepartfamily}%
{\ifdefvoid{\namepartgiven}{}{\namepartgiven\space
 }%
\namepartfamily}%
\ifthenelse{\value{listcount}<\value{liststop}}
{\addcomma\space}
{}}



\DeclareCiteCommand{\citeseasonallx}
{}
{\textmd{\printlist{language}}%
\iffieldundef{sequenceta}{%true
   \printfield{title}%
   \iffieldundef{term}{}{%
        \printterm}}{%false
   \printfield{sequenceta}%
   }%
\iffieldundef{sequence}{}{\printfield{sequence}}
}
{}
{}


\DeclareCiteCommand{\citeseasontitle}
{}
{\printfield{title}
}
{}
{}

\DeclareCiteCommand{\citeseason}
{}
{\printdate}
{}
{}

\DeclareCiteCommand{\citeseasonterm}
{}
{\printfield[plainb]{term}}
{}
{}

\DeclareCiteCommand{\citeseasontermyear}
{}
{\printfield[plainc]{term}}
{}
{}

\DefineBibliographyStrings{greek}{%
  spring    = {άνοιξη},
  summer  = {καλοκαίρι},
  autumn   = {φθινόπωρο},
  winter     = {χειμώνας},
  langgreek = {Ελληνικά},
  hilaryterm = {Ελληνικά Greek Hilary},
}

\DefineBibliographyStrings{italian}{%
  spring    = {primavera},
  summer  = {estate},
  autumn   = {autunno},
  winter     = {inverno},
  langitalian = {italiano},
}




%-----------------------------

\title{\citeseasontitle{notesset1}}
\author{}
\date{\citeseason{notesset1}}
%------------------
\begin{document}
\maketitle

\section*{Overview}
\begin{itemize}
\item \textbf{\citeseasonall{notesset1}} covers introductory material.
\item \textbf{\citeseasonall{notesset2}} advances to the next topic.
\item \textbf{\citeseasonall{notesset3}} covers the extended course.
\item German: \textbf{\citeseasonall{notesset4}} is the xyz version. 
\item Greek: \textbf{\citeseasonall{notesset5}} is the abc version. 
\item Italian: \textbf{\citeseasonall{notesset5a}} is the abc version. 
\end{itemize}


\section*{Season Extended}
\subsection*{University Terms and Court Terms}
%\citeseasonallx{testutha}\par
\citeseasonallx{testuta}.  \citeseasonterm{testuta} of \citeseasontermyear{testuta} will see a new\ldots\par
%
\renewcommand\seqsep{\ \\ \makebox[2em]{\ }}
\renewcommand\uuformat[1]{\textsc{#1}}
\renewcommand\postuuformat{$\leftarrow$\par}
\noindent\citeseasonallx{testutb} xxx\par
\citeseasonallx{testutc}\par
\citeseasonallx{testutd}\par
\citeseasonallx{testute}\par
\citeseasonallx{testutf}\par\ 
\citeseasonallx{testutg}\par
\subsection*{Semesters}
\ \par
\citeseasonallx{testsa}\par
\citeseasonallx{testsb}\par
\citeseasonallx{tests1}\par
\citeseasonallx{tests2}\par
\subsection*{School Terms}
\ \par
\citeseasonallx{testta}, the \citeseasonterm{testta} of \citeseasontermyear{testta}\par
\citeseasonallx{testtb}\par
\citeseasonallx{testtc}\par
\ \par
\citeseasonallx{testsp}\par
\citeseasonallx{testsu}\par
\citeseasonallx{testau}\par
\citeseasonallx{testwi}\par

\section*{Languages}
\citeseasonallx{testutag}\par


%biber
%
%format.pm
%
%\begin{verbatim}
%  my %
%    seasons = ( 21 => 'spring',
%                  22 => 'summer',
%                  23 => 'autumn',
%                  24 => 'winter' );
%                  
%...\texlive\2020
%\texmf-dist
%\source
%\bibtex
%\biber
%\biblatex-biber.tar
%\biblatex-biber
%\biblatex-biber-2.15
%\lib
%\Biber
%\Date                  
%\end{verbatim}

\renewcommand\seqsepta{\par}
\renewcommand\seqsep{\par}
\renewcommand\uuformat[1]{$\rightarrow$\begin{tabular}{|l|}\hline\textsc{#1}\\ \hline \end{tabular}}
\renewcommand\postuuformat{}

\citeseasonallx{testuta}\par\bigskip 
\renewcommand\seqsepta{\addcomma\addspace}
\renewcommand\seqsep{\addcomma\addspace}
\renewcommand\uuformat[1]{#1}
\citeseasonallx{testutb}

\end{document}

Compile with lualatex in a recent TexLive because babel uses lua code for language/script processing.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .