% \iffalse meta-comment
%
% Copyright 2006, 2009, 2011, 2014 Heiko Oberdiek
% Copyright 2014 The LaTeX3 Project
% 
% This file is part of the LaTeX base system.
% -------------------------------------------
%
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
%    http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This file has the LPPL maintenance status "maintained".
%
% 2006/06/02 v1.0: First version.
% 2009/09/25 v1.1: \usepackage disabled.
% 2011/07/01 v1.2: Fixes.
% 2014/02/30 v1.3:
%  * Update for LaTeX 2014/05/01.
%  * Fix for anchor positions of issue titles.
% 2014/05/15 v1.4:
%  * Updates for ltnews21.tex.
% 2014/11/14 v1.4a:
%  * LaTeX Project version
% 2015/02/16 v1.4b:
%  * Fix TOC issue
% \fi

\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{ltnews.tex}%
  [2015/02/16 v1.4b Master file for ltnews*.tex (LaTeX Project)]
\providecommand*{\lastissue}{22}
\InputIfFileExists{ltnews-lastissue.cfg}{}{}

\RequirePackage{ifpdf}
\ifpdf
  % overwrite nasty stuff of ltnews.cfg
  % (use of hyperref for this would also support other drivers)
  \pdfinfo{%
    /Title(LaTeX News)%
    /Subject(Issues 1--\lastissue)%
    /Author(The LaTeX Project)%
    /Creator(LaTeX)%
  }
  \newtoks\pdfinfo
\else
  \AtBeginDocument{%
    \hypersetup{%
      pdftitle={LaTeX News},%
      pdfsubject={Issues 1\textendash\lastissue},%
      pdfauthor={The LaTeX Project},%
      pdfcreator={LaTeX}%
    }%
  }%
\fi

\RequirePackage{lmodern}
\RequirePackage[T1]{fontenc}
\RequirePackage{hologo}

\documentclass{ltnews}

\expandafter
\DeclareRobustCommand\expandafter*\expandafter\small\expandafter{\small}

\RequirePackage{hyperref}
\hypersetup{colorlinks}
\RequirePackage{bookmark}

\makeatletter

\newcounter{issue}
\renewcommand*{\theissue}{%
  \ifnum\value{issue}<10 0\fi
  \number\value{issue}%
}

\newcommand*{\MonthJanuary}{01}
\newcommand*{\MonthFebruary}{02}
\newcommand*{\MonthMarch}{03}
\newcommand*{\MonthApril}{04}
\newcommand*{\MonthMay}{05}
\newcommand*{\MonthJune}{06}
\newcommand*{\MonthJuly}{07}
\newcommand*{\MonthAugust}{08}
\newcommand*{\MonthSeptember}{09}
\newcommand*{\MonthOctober}{10}
\newcommand*{\MonthNovember}{11}
\newcommand*{\MonthDecember}{12}
\newcommand*{\printissue}{%
  Issue %
  \texorpdfstring{\number\value{issue}}{\theissue}, %
  \texorpdfstring{\@month\space\@year}{\@year/\@nameuse{Month\@month}}%
}
\let\l@part\l@section
\let\l@section\l@subsection
\let\l@subsection\l@subsubsection
\let\l@subsubsection\l@paragraph
\let\l@paragraph\l@subparagraph

\newcommand*{\makefirsttitle}{%
  \twocolumn[{%
    \parbox[t][4\baselineskip]{\textwidth}{%
      \@titlefont\@title, Issues 1--\lastissue
    }%
  }]%
}

% table of contents with underlined links
\iffalse % disable if option colorlinks is used
\@ifpackagelater{hyperref}{2006/06/01}{%
  \newcommand*{\saved@tableofcontents}{}%
  \let\saved@tableofcontents\tableofcontents
  \renewcommand*{\tableofcontents}{%
    \begingroup
      \hypersetup{pdfborderstyle={/S/U/W 1}}%
      \saved@tableofcontents
    \endgroup
  }%
}{}
\fi
\makeatother

\begin{document}

%%% Title and Table of Contents

\makefirsttitle
\pdfbookmark[0]{\contentsname}{toc}
\tableofcontents
\clearpage

%%% Issues

\begingroup
  \makeatletter
  \renewcommand*{\usepackage}[2][]{%
    \begingroup
      \def\x{#1|#2}%
      \def\y{T1|fontenc}%
      \ifx\x\y
      \else
        \def\y{|lmodern,url}%
        \ifx\x\y
        \else
          \def\y{|lmodern,url,hologo}%
          \ifx\x\y
          \else
            \@latex@error{ltnews.tex: \string\usepackage[#1]{#2} found}\@ehc
          \fi
        \fi
      \fi
    \endgroup
  }%
  \renewcommand*{\documentclass}[2][]{%
    \setcounter{footnote}{0}%
    \gobbleopt
  }%
  \newcommand*{\gobbleopt}[1][]{}%
  \let\org@twocolumn\twocolumn
  \renewenvironment{document}{%
    \clearpage
    \ifnum\@issue=20 %
      \addtocontents{toc}{\protect\setcounter{tocdepth}{5}}%
      \addtocontents{toc}{%
        \protect\makeatletter
       }%
       \addtocontents{toc}{%
         \let\protect\saved@l@paragraph\protect\l@paragraph
       }%
       \addtocontents{toc}{%
         \let\protect\l@paragraph\protect\l@subsection
       }%
    \fi
    \ifnum\@issue=\lastissue\space
      \addtocontents{toc}{%
        \let\protect\l@paragraph\protect\saved@l@paragraph
      }%
      \def\toclevel@subsection{1}%
      \def\toclevel@subsubsection{2}%
      \addtocontents{toc}{\protect\setcounter{tocdepth}{4}}%
      \renewcommand*{\tableofcontents}{%
        \section*{\contentsname}%
        \@starttoc{toc\lastissue}%
      }%
      \let\saved@addtocontents\addtocontents
      \renewcommand*{\addtocontents}[2]{%
        \saved@addtocontents{##1}{##2}%
        \def\temp@toc{toc}%
        \def\temp@param{##1}%
        \ifx\temp@toc\temp@param
          \saved@addtocontents{toc\lastissue}{##2}%
        \fi
      }%
      \let\l@subsubsection\l@subsection
      \let\l@subsection\l@section
      \let\l@section\l@part
      \let\l@part\@gobbletwo
    \fi
    \def\twocolumn[{%
      \let\twocolumn\org@twocolumn
      \org@twocolumn[%
      {% because of optional argument of \twocolumn
        \pdfbookmark[0]{\printissue}{issue\theissue}%
      }%
      \begingroup
        \let\WriteBookmarks\relax
        \@firstofone{% inside opt. arg. of \twocolumn: protect "]"
          \renewcommand*{\Hy@writebookmark}[5]{}%
        }%
        \phantomsection
        \addcontentsline{toc}{part}{\printissue}%
      \endgroup
    }%
  }{%
    \clearpage
  }%
  \makeatother
  \loop
  \ifnum\value{issue}<\lastissue
    \stepcounter{issue}%
    \input{ltnews\theissue}%
  \repeat
  \stepcounter{issue}%
  \makeatletter
  \IfFileExists{ltnews\theissue}{%
    \@latex@error{\jobname.tex is out of date,\MessageBreak
      there is `ltnews\theissue.tex'%
    }\@ehc
  }{}%
  \makeatother
\endgroup

\end{document}
