summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/lni
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-03-03 03:01:26 +0000
committerNorbert Preining <norbert@preining.info>2021-03-03 03:01:26 +0000
commit6a1383661dd7817761345a9d4ddfd9db6ba2dd1e (patch)
treedec33644ee8df10255c235853ff6ef809b223a90 /macros/latex/contrib/lni
parent4763ec8ceefaf2b038d591b8c15d88d081aec6c9 (diff)
CTAN sync 202103030301
Diffstat (limited to 'macros/latex/contrib/lni')
-rw-r--r--macros/latex/contrib/lni/CHANGELOG.md13
-rw-r--r--macros/latex/contrib/lni/README.md4
-rw-r--r--macros/latex/contrib/lni/lni-author-template.tex2
-rw-r--r--macros/latex/contrib/lni/lni-paper-example-de.tex2
-rw-r--r--macros/latex/contrib/lni/lni.dtx143
-rw-r--r--macros/latex/contrib/lni/lni.ins124
-rw-r--r--macros/latex/contrib/lni/lni.pdfbin360183 -> 360866 bytes
7 files changed, 229 insertions, 59 deletions
diff --git a/macros/latex/contrib/lni/CHANGELOG.md b/macros/latex/contrib/lni/CHANGELOG.md
index ffe1091622..0620ff73a0 100644
--- a/macros/latex/contrib/lni/CHANGELOG.md
+++ b/macros/latex/contrib/lni/CHANGELOG.md
@@ -6,6 +6,16 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
## [Unreleased]
+## [1.7.0] - 2021-03-02
+
+### Changed
+
+- Change loading of latest ngerman hyphenation patterns (#47)
+- Change `\year` to `\yearofpublication` to avoid problems (#85)
+
+### Fixed
+- Fix setting of pdf metadata (#87)
+
## [1.6.0] - 2019-10-14
### Added
@@ -96,7 +106,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
## [1.0.0] - 2017-04-07
First release of the revised files
-[Unreleased]: https://github.com/gi-ev/LNI/compare/v1.6...HEAD
+[Unreleased]: https://github.com/gi-ev/LNI/compare/v1.7...HEAD
+[1.7.0]: https://github.com/gi-ev/LNI/releases/tag/v1.7
[1.6.0]: https://github.com/gi-ev/LNI/releases/tag/v1.6
[1.5.0]: https://github.com/gi-ev/LNI/releases/tag/v1.5
[1.4.0]: https://github.com/gi-ev/LNI/releases/tag/v1.4
diff --git a/macros/latex/contrib/lni/README.md b/macros/latex/contrib/lni/README.md
index 14ba136377..f986ef46f5 100644
--- a/macros/latex/contrib/lni/README.md
+++ b/macros/latex/contrib/lni/README.md
@@ -3,8 +3,8 @@
```
----------------------------------------------------------------------------
lni -- A class for submissions to the ``Lecture Notes in Informatics''
-(c) 2016-2019 Gesellschaft für Informatik (GI)
-Version: 1.6
+(c) 2016-2021 Gesellschaft für Informatik (GI)
+Version: 1.7
Maintainer: Martin Sievers
Email: martin.sievers@schoenerpublizieren.de
License: Released under the LaTeX Project Public License v1.3c or later
diff --git a/macros/latex/contrib/lni/lni-author-template.tex b/macros/latex/contrib/lni/lni-author-template.tex
index 6dffc4195c..abdbd74ce6 100644
--- a/macros/latex/contrib/lni/lni-author-template.tex
+++ b/macros/latex/contrib/lni/lni-author-template.tex
@@ -24,7 +24,7 @@ Firstname2 Lastname2\footnote{University, Department, Address, Country
\startpage{11} % Beginn der Seitenzählung für diesen Beitrag / Start page
\editor{Herausgeber et al.} % Names of Editors
\booktitle{Name-der-Konferenz} % Name of book title
-\year{2017}
+\yearofpublication{2017}
%%%\lnidoi{18.18420/provided-by-editor-02} % if known
\maketitle
diff --git a/macros/latex/contrib/lni/lni-paper-example-de.tex b/macros/latex/contrib/lni/lni-paper-example-de.tex
index 236664d160..40f52c0b1f 100644
--- a/macros/latex/contrib/lni/lni-paper-example-de.tex
+++ b/macros/latex/contrib/lni/lni-paper-example-de.tex
@@ -49,7 +49,7 @@
\startpage{11} % Beginn der Seitenzählung für diesen Beitrag
\editor{Herausgeber et al.} % Namen der Herausgeber
\booktitle{Name-der-Konferenz} % Name des Tagungsband; optional Kurztitel
-\year{2017}
+\yearofpublication{2017}
%%%\lnidoi{18.18420/provided-by-editor-02} % Falls bekannt
\maketitle
diff --git a/macros/latex/contrib/lni/lni.dtx b/macros/latex/contrib/lni/lni.dtx
index 8301090e40..4ad46abd8d 100644
--- a/macros/latex/contrib/lni/lni.dtx
+++ b/macros/latex/contrib/lni/lni.dtx
@@ -60,7 +60,7 @@ License:| Released under the LaTeX Project Public License v1.3c or later
\postamble
-Copyright (C) 2016-2019 by Gesellschaft für Informatik e.V. (GI)
+Copyright (C) 2016-2021 by Gesellschaft für Informatik e.V. (GI)
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License (LPPL), either
@@ -101,11 +101,11 @@ This work consists of the file lni.dtx
%</install>
%<install>\endbatchfile
%<*internal>
-\usedir{source/latex/lni}
-\generate{
- \usepreamble\classpre
- \file{\jobname.ins}{\from{\jobname.dtx}{install}}
-}
+%%%\usedir{source/latex/lni}
+%%%\generate{
+%%%% \usepreamble\classpre
+%%% \file{\jobname.ins}{\from{\jobname.dtx}{install}}
+%%%}
\nopreamble\nopostamble
\usedir{doc/latex/lni}
\generate{
@@ -134,7 +134,7 @@ This work consists of the file lni.dtx
%<class>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<class>\ProvidesClass{lni}
%<*class>
- [2019/10/14 v1.6BETA Official class for submissions to the ``Lecture Notes
+ [2021/03/02 v1.7 Official class for submissions to the ``Lecture Notes
in Informatics'']
%</class>
%<*driver>
@@ -160,8 +160,8 @@ This work consists of the file lni.dtx
\usepackage[%
pdftitle={lni: Official LaTeX class for submissions to the ``Lecture Notes in
Informatics'', published by the ``Gesellschaft für Informatik e.\,V.'' (GI)},
- pdfauthor={Martin Sievers},
- urlcolor=blue,%
+ pdfauthor={Martin Sievers},
+ urlcolor=blue,%
linktoc=both,%
colorlinks=true]{hyperref}
\usepackage[nameinlink,capitalise]{cleveref}
@@ -305,6 +305,13 @@ This work consists of the file lni.dtx
% it more compatible with other packages like \pkg{authorarchive}}
% \changes{v1.6}{2019/10/14}{Fix for BibTeX style}
% \changes{v1.6}{2019/10/14}{Add support for \pkg{selnolig}}
+% \changes{v1.7}{2020/12/03}{Revert redefinition of \cs{year} after
+% \cs{maketitle}}
+% \changes{v1.7}{2021/03/02}{Fix setting of pdf metadata (#87)}
+% \changes{v1.7}{2021/03/02}{Change loading of latest ngerman hyphenation
+% patterns (#47)}
+% \changes{v1.7}{2021/03/02}{Change \cs{year} to \cs{yearofpublication} to
+% avoid problems (#85)}
%
% \GetFileInfo{\jobname.dtx}
% \DoNotIndex{\newcommand,\newenvironment}
@@ -453,7 +460,7 @@ This work consists of the file lni.dtx
% % !TeX program = pdflatex
% % !BIB program = bibtex8
% % !TeX encoding = UTF-8
-% % !TeX spellcheck = de_DE
+% % !TeX spellcheck = en_US
% \documentclass[english]{lni}
% \end{examplecode}
%
@@ -461,7 +468,7 @@ This work consists of the file lni.dtx
% \DescribeMacro{\startpage}\DescribeMacro{\editor}%
% \DescribeMacro{\booktitle\space(changed in v1.6)}%
% \DescribeMacro{\booksubtitle\space(new in v1.6)}%
-% \DescribeMacro{\year}In addition to the macros stated in
+% \DescribeMacro{\yearofpublication}In addition to the macros stated in
% \cref{sec:titlepage} for authors, there are special editor macros to
% influence the layout of the article:
% \begin{itemize}
@@ -601,7 +608,8 @@ This work consists of the file lni.dtx
% \end{table}
% \end{examplecode}
%
-% \subsubsection{Listings\,/\,Source code}
+% \subsubsection{\texorpdfstring{Listings\,/\,Source code}%
+% {Listings/Source code}}
% The \lni{} bundle loads the \pkg{verbatim} and \pkg{listings} package. While
% the former is there for compatability, the later is the standard way of
% integrating source code listings into a \LaTeX{} document.
@@ -785,15 +793,6 @@ This work consists of the file lni.dtx
\ProcessOptions\relax
%
\RequirePackage{iftex}
-\ifPDFTeX
- \RequirePackage{hyphsubst}
- \HyphSubstIfExists{ngerman-x-latest}%
- {\HyphSubstLet{ngerman}{ngerman-x-latest}%
- \ClassInfo{lni}{Using latest German hyphenation patterns}}%
- {\ClassWarning{lni}{Latest German hyphenation patterns could not be found!%
- \MessageBreak If you write a German article you should check your%
- installation}}%
-\fi%
\LoadClass[10pt,twoside,a4paper,fleqn]{article}
\ifPDFTeX
\RequirePackage{cmap}
@@ -806,6 +805,8 @@ This work consists of the file lni.dtx
\RequirePackage[ngerman,english]{babel}
\else
\RequirePackage[english,ngerman]{babel}
+ \babelprovide[hyphenrules=ngerman-x-latest]{ngerman}
+ \ClassInfo{lni}{Using latest German hyphenation patterns}%
\fi%
% Hint by http://tex.stackexchange.com/a/321067/9075 -> enable "= as dashes
\useshorthands*{"}
@@ -848,7 +849,7 @@ This work consists of the file lni.dtx
{\RequirePackage{newtxmath}}%
{}%
\RequirePackage[no-math]{fontspec}
- \IfFontExistsTF{texgyretrmes-regular.otf}
+ \IfFontExistsTF{texgyretermes-regular.otf}
{%
\setmainfont{texgyretermes}[
Extension = .otf,
@@ -956,7 +957,7 @@ This work consists of the file lni.dtx
\normalsize
\expandafter\csname\CROP@font\endcsname{%
``\jobname''\x
- \the\@rigyear/\the\month/\the\day\x
+ \the\year/\the\month/\the\day\x
\CROP@time\x
page\kern.5em\thepage\x
\#\the\CROP@index
@@ -1089,8 +1090,16 @@ This work consists of the file lni.dtx
% \begin{macro}{\author}
% \begin{macrocode}
\renewcommand{\author}{\@dblarg\@@author}
-\def\@@author[#1]#2{\gdef\@shortauthor{{\let\footnote\@gobble%
- \def\and{\unskip,\ }#1}}\gdef\@author{#2}}
+\newcommand{\@@author}[2][]{%
+ \DeclareRobustCommand{\@shortauthor}{%
+ {%
+ %\let\footnote\@gobble%
+ \def\and{\texorpdfstring{\unskip,\ }{}}%
+ #1%
+ }%
+ }%
+ \DeclareRobustCommand{\@author}{#2}%
+ }
% \end{macrocode}
% \end{macro}
% \begin{macro}{\authorrunning}
@@ -1113,7 +1122,7 @@ This work consists of the file lni.dtx
% Title: Kopie aus article.cls mit anderem \thispagestyle
% \begin{macrocode}
\renewcommand\maketitle{\par%
-\begingroup
+ \begingroup
\renewcommand\thefootnote{\@arabic\c@footnote}%
\def\@makefnmark% keine Einrückung der Fußnoten eingestellt
{\@textsuperscript{\normalfont\@thefnmark}}%
@@ -1132,7 +1141,7 @@ This work consists of the file lni.dtx
\fi%
\else
\newpage
- \global\@topnum\z@ % Prevents figures from going at top of page.
+ \global\@topnum\z@% Prevents figures from going at top of page.
\@maketitle
\fi%
\ifnorunningheads
@@ -1142,6 +1151,14 @@ This work consists of the file lni.dtx
\fi%
\@thanks
\endgroup
+ \ifusehyperref
+ \HyXeTeX@CheckUnicode
+ \HyPsd@PrerenderUnicode{\@shortauthor}%
+ \pdfstringdef\@pdfauthor{\@shortauthor}%
+ \HyXeTeX@CheckUnicode
+ \HyPsd@PrerenderUnicode{\@title}%
+ \pdfstringdef\@pdftitle{\@title}%
+ \fi%
\global\let\thanks\relax
\global\let\maketitle\relax
\global\let\@maketitle\relax
@@ -1215,8 +1232,13 @@ This work consists of the file lni.dtx
\noindent\ignorespaces{\bfseries Keywords:\ }}%
{\global\keywordsfalse}
\let\@RIGsection\section
-\pretocmd\@startsection{\ifkeywords\ClassError{lni}{keywords is an environment, not a macro}%
- {Please change \string\keywords\space to an environment}\keywordsfalse\fi}{}{}
+\pretocmd\@startsection{%
+ \ifkeywords\ClassError{lni}%
+ {keywords is an environment, not a macro}%
+ {Please change \string\keywords\space to an environment}%
+ \keywordsfalse%
+ \fi%
+}{}{}
% \end{macrocode}
% \end{environment}
% Section headings
@@ -1290,7 +1312,7 @@ This work consists of the file lni.dtx
\renewcommand{\labelitemi}{$\bullet$}
\renewcommand*\itemize{%
\ifnum \@itemdepth >\thr@@\@toodeep\else
- \setlength{\labelsep}{0.70cm}%Abstand zum Aufzählungspunkt
+ \setlength{\labelsep}{0.70cm}%
\advance\@itemdepth\@ne
\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
\expandafter
@@ -1352,6 +1374,7 @@ This work consists of the file lni.dtx
% \end{macro}
% \begin{macro}{\booktitle}
% \begin{macrocode}
+\def\@bookshorttitle{}
\newcommand{\booktitle}{\@dblarg\@@booktitle}
\def\@@booktitle[#1]#2{\gdef\@bookshorttitle{#1}\gdef\@booktitle{#2}}
% \end{macrocode}
@@ -1366,35 +1389,43 @@ This work consists of the file lni.dtx
% \end{macrocode}
% \end{macro}
% \begin{macrocode}
-\AtBeginDocument{%
- \let\@rigyear\year
- \newcommand*{\@year}{\the\@rigyear}
- \renewcommand*{\year}[1]{%
- \renewcommand{\@year}{#1}%
- }%
-}%
+\newcommand*{\@yearofpublication}{\the\year}
+\newcommand*{\yearofpublication}[1]{\renewcommand*{\@yearofpublication}{#1}}
% \end{macrocode}
% set-up for header and footer
% \begin{macrocode}
\fancypagestyle{plain}{%
\fancyhead{} % Löscht alle Kopfzeileneinstellungen
- \fancyhead[RO]{\small\@editor~(Hrsg.):\ \@bookshorttitle,\hspace{1sp}\null\linebreak%
- Lecture Notes in Informatics (LNI), Gesellschaft für Informatik, Bonn~\@year%
- \hspace{5pt}\thepage\hspace{0.05cm}}
- \fancyhead[LE]{\small\@editor~(Hrsg.):\
- \@bookshorttitle,\linebreak\hspace{0.05cm}\thepage\hspace{5pt} Lecture Notes
- in Informatics (LNI), Gesellschaft für Informatik, Bonn~\@year}
- \fancyfoot{} % Löscht alle Fußzeileneinstellungen
- \renewcommand{\headrulewidth}{0.4pt} %Linie unter Kopfzeile
+ \fancyhead[RO]{%
+ \small\@editor~(Hrsg.):\
+ \ifdefempty{\@bookshorttitle}%
+ {}%
+ {\@bookshorttitle,\hspace{1sp}}%
+ \null\linebreak%
+ Lecture Notes in Informatics (LNI), Gesellschaft für Informatik,
+ Bonn~\@yearofpublication%
+ \hspace{5pt}\thepage\hspace{0.05cm}%
+ }%
+ \fancyhead[LE]{%
+ \small\@editor~(Hrsg.):\
+ \ifdefempty{\@bookshorttitle}%
+ {}%
+ {\@bookshorttitle,\hspace{1sp}}%
+ \linebreak\hspace{0.05cm}\thepage\hspace{5pt} Lecture Notes
+ in Informatics (LNI), Gesellschaft für Informatik,
+ Bonn~\@yearofpublication%
+ }%
+ \fancyfoot{}% Löscht alle Fußzeileneinstellungen
+ \renewcommand{\headrulewidth}{0.4pt}% Linie unter Kopfzeile
}%
\ifnorunningheads
\pagestyle{empty}
\else
\pagestyle{fancy}
- \fancyhead{} % Löscht alle Kopfzeileneinstellungen
+ \fancyhead{}% Löscht alle Kopfzeileneinstellungen
\fancyhead[RO]{\small\@shorttitle\hspace{5pt}\thepage\hspace{0.05cm}}
\fancyhead[LE]{\hspace{0.05cm}\small\thepage\hspace{5pt}\@shortauthor}
- \fancyfoot{} % Löscht alle Fußzeileneinstellungen
+ \fancyfoot{}% Löscht alle Fußzeileneinstellungen
\renewcommand{\headrulewidth}{0.4pt} %Linie unter Kopfzeile
\fi%
% \end{macrocode}
@@ -1417,10 +1448,14 @@ This work consists of the file lni.dtx
colorlinks=true,%
allcolors=black,%
pdfstartview=Fit,%
- pdfauthor={\@author},%
- pdftitle={\@title}%
}%
+%%% \pdfstringdefDisableCommands{%
+%%% \def\unskip{}%
+%%% \renewcommand{\footnote}[1]{}%
+%%% }%
}%
+\else
+ \providecommand{\texorpdfstring}[2]{#2}%
\fi%
% \end{macrocode}
% \begin{macrocode}
@@ -1446,12 +1481,12 @@ This work consists of the file lni.dtx
% \begin{macrocode}
\AtEndPreamble{%
\@ifpackageloaded{hyperref}
- {\RequirePackage[all]{hypcap}}%
- {}%
+ {\RequirePackage[all]{hypcap}}%
+ {}%
}%
% \end{macrocode}
% \begin{macrocode}
-\def\and{\unskip\hspace{-0.42em},\hspace{.6em}}
+\def\and{\texorpdfstring{\unskip\hspace{-0.42em},\hspace{.6em}}{, }}%
% \end{macrocode}
% \begin{macrocode}
\ifusebiblatex
@@ -2948,7 +2983,7 @@ Firstname2 Lastname2\footnote{University, Department, Address, Country
%numbering at this number
\editor{Herausgeber et al.} % Names of Editors
\booktitle{Name-der-Konferenz} % Name of book title
-\year{2017}
+\yearofpublication{2017}
%%%\lnidoi{18.18420/provided-by-editor-02} % if known
\maketitle
@@ -3108,7 +3143,7 @@ Schlagwort1 \and Schlagwort2 %Keyword1 \and Keyword2
\startpage{11} % Beginn der Seitenzählung für diesen Beitrag
\editor{Herausgeber et al.} % Namen der Herausgeber
\booktitle{Name-der-Konferenz} % Name des Tagungsband; optional Kurztitel
-\year{2017}
+\yearofpublication{2017}
%%%\lnidoi{18.18420/provided-by-editor-02} % Falls bekannt
\maketitle
diff --git a/macros/latex/contrib/lni/lni.ins b/macros/latex/contrib/lni/lni.ins
new file mode 100644
index 0000000000..5536ab57b9
--- /dev/null
+++ b/macros/latex/contrib/lni/lni.ins
@@ -0,0 +1,124 @@
+%%
+%% This is file `lni.ins',
+%% --------| -----------------------------------------------------------------
+%% lni:| A class for submissions to the ``Lecture Notes in Informatics''
+%% Author:| Martin Sievers
+%% Email:| martin.sievers@schoenerpublizieren.de
+%% License:| Released under the LaTeX Project Public License v1.3c or later
+%% See:| http://www.latex-project.org/lppl.txt
+%% --------| -----------------------------------------------------------------
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\declarepreamble\bibtexengpre
+lnig.bst
+Lecture Notes in Informatics Style File (english)
+Version 1.0 (2017/04/07)
+
+The Style File is based on alpha.bst
+
+This work may be freely used,
+distributed and modified.
+Modified files should be clearly indicated as such and renamed.
+\endpreamble
+
+\declarepreamble\bibtexgerpre
+lnig.bst
+Lecture Notes in Informatics Style File (german)
+Version 1.0 (2017/04/07)
+
+The Style File is based on alpha.bst
+
+This work may be freely used,
+distributed and modified.
+Modified files should be clearly indicated as such and renamed.
+\endpreamble
+
+\declarepreamble\classpre
+--------| -----------------------------------------------------------------
+ lni:| A class for submissions to the ``Lecture Notes in Informatics''
+ Author:| Martin Sievers
+ Email:| martin.sievers@schoenerpublizieren.de
+License:| Released under the LaTeX Project Public License v1.3c or later
+ See:| http://www.latex-project.org/lppl.txt
+--------| -----------------------------------------------------------------
+\endpreamble
+
+\def\templatepre{%
+\perCent\space !TeX encoding = UTF-8^^J%
+\perCent\space !TeX program = pdflatex^^J%
+\perCent\space !BIB program = bibtex^^J%
+}
+
+\def\templatepreger{%
+\perCent\space !TeX encoding = UTF-8^^J%
+\perCent\space !TeX spellcheck = de_DE^^J%
+}
+
+\postamble
+
+Copyright (C) 2016-2021 by Gesellschaft für Informatik e.V. (GI)
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License (LPPL), either
+version 1.3c of this license or (at your option) any later
+version. The latest version of this license is in the file:
+
+http://www.latex-project.org/lppl.txt
+
+This work is "maintained" (as per LPPL maintenance status) by
+Martin Sievers.
+
+This work consists of the file lni.dtx
+ lni.ins
+ README.md
+ CHANGELOG.md
+ and the derived files lni.pdf
+ lni.cls
+ lni-author-template.tex
+ lni-paper-example-de.bib
+ lni-paper-example-de.tex
+ lni.bst
+ lnig.bst
+\endpostamble
+
+\usedir{tex/latex/lni}
+\AddGenerationDate
+\generate{
+ \usepreamble\classpre
+ \file{\jobname.cls}{\from{\jobname.dtx}{class}}
+}
+\usedir{bibtex/bst/lni}
+\generate{
+ \usepreamble\bibtexengpre
+ \file{\jobname.bst}{\from{\jobname.dtx}{bibtex,eng}}
+ \usepreamble\bibtexgerpre
+ \file{lnig.bst}{\from{\jobname.dtx}{bibtex,ger}}
+}
+\endbatchfile
+%%
+%% Copyright (C) 2016-2021 by Gesellschaft für Informatik e.V. (GI)
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License (LPPL), either
+%% version 1.3c of this license or (at your option) any later
+%% version. The latest version of this license is in the file:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This work is "maintained" (as per LPPL maintenance status) by
+%% Martin Sievers.
+%%
+%% This work consists of the file lni.dtx
+%% lni.ins
+%% README.md
+%% CHANGELOG.md
+%% and the derived files lni.pdf
+%% lni.cls
+%% lni-author-template.tex
+%% lni-paper-example-de.bib
+%% lni-paper-example-de.tex
+%% lni.bst
+%% lnig.bst
+%%
+%% End of file `lni.ins'.
diff --git a/macros/latex/contrib/lni/lni.pdf b/macros/latex/contrib/lni/lni.pdf
index f0a4fff3c4..e4aa3474b2 100644
--- a/macros/latex/contrib/lni/lni.pdf
+++ b/macros/latex/contrib/lni/lni.pdf
Binary files differ