1

I want to distinguish between literature and ancient sources. Therefore, I used "classictext" and "entrysubtype". I have this question: For my literature, I want to use "ibid", bot for those ancient sources I did not want "ibid." or "idem.", but a repetition of source. How can I do that? Here is the MWE:

\documentclass{article}
\usepackage[style=sbl,citepages=separate,backend=biber,sblfootnotes=false,ibidpage=true,ibidtracker=true,idemtracker=true,pagetracker=spread,sorting=nyvt,url=false,isbn=false,doi=false,clearlang=false,uniquename=false]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
       @book{Guillaum.Gnostique.SC,

editor = {Guillaumont, Antoine and Guillaumont, Claire}, gender = {pm}, date = {1989}, title = {Évagre le Pontique. Le Gnostique. Ou a celui qui est devenu digne de la science}, shorttitle = {Évagre le Pontique. Le Gnostique}, location = {Paris}, keywords = {Evagrius}, series = {SC}, number = {356}, location = {Paris}, } @classictext{Evagr.Gnost.gr, author = {{Evagr. Pont. Gnost.}}, xref = {Guillaum.Gnostique.SC}, entrysubtype = {classical}, Options = {skipbib=true}, Options = {skipbiblist=true}, shorthand = {Evagr. Pont. Gnost.}, } \end{filecontents}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=entrysubtype, match={classical},final]
      \step[fieldset=pagination, fieldvalue={none}]
    }
  }
}

\DeclareFieldFormat{shorthand}{%
  \iffieldequalstr{entrysubtype}{classical}
    {\mkbibemph{#1\isdot}}
    {#1\isdot}}

\renewcommand*{\postnotedelim}{%
  \iffieldequalstr{entrysubtype}{classical}
    {}
    {\addcomma}%
  \addspace}

\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
\cite[4]{Evagr.Gnost.gr}; \cite[5]{Evagr.Gnost.gr}\\

\cite[6]{Guillaum.Gnostique.SC}; \cite[7]{Guillaum.Gnostique.SC}

\end{document}

Alan Munn
  • 218,180
test
  • 97
  • Thanks, is there are a possibility for preventing "ibid" exclusively for only a specific literature type such as "classictext" or for a specific entrysubtype? – test Feb 11 '24 at 19:26
  • Can you give me an example how to do that? I am still a beginner in LaTeX... – test Feb 11 '24 at 20:28
  • Sorry no time to do that at the moment. But thinking further, it likely won't work, since you need to issue the reset command before the \cite. – Alan Munn Feb 11 '24 at 20:40
  • Looking at your other question (https://tex.stackexchange.com/q/708732/35864) where the example code didn't have the entrysubtype = {classical}, yet, I'm thinking: Do you actually need that? If all your @classictexts are entrysubtype = {classical}, and everything that could ever be entrysubtype = {classical}, is a @classictext, we might as well just test for @classictext instead of entrysubtype = {classical},. – moewe Feb 26 '24 at 07:34
  • Instead of \step[fieldsource=entrysubtype, match={classical},final] you'd use \pertype{classictext} and instead of \iffieldequalstr{entrysubtype}{classical} you'd use \ifentrytype{classictext}. (It is possible that \pertype{classictext} requires you to register your new type in a .dbx file with the data model: https://tex.stackexchange.com/q/175776/35864, but that is good practice anyway.) – moewe Feb 26 '24 at 07:36

1 Answers1

1

We can insert another condition into the "ibid" to check if entrysubtype is equal to classical.

\documentclass{article}
\usepackage[style=sbl,citepages=separate,backend=biber,sblfootnotes=false,ibidpage=true,ibidtracker=true,idemtracker=true,pagetracker=spread,sorting=nyvt,url=false,isbn=false,doi=false,clearlang=false,uniquename=false]{biblatex}

\DeclareSourcemap{ \maps[datatype=bibtex]{ \map{ \step[fieldsource=entrysubtype, match={classical},final] \step[fieldset=pagination, fieldvalue={none}] } } }

\DeclareFieldFormat{shorthand}{% \iffieldequalstr{entrysubtype}{classical} {\mkbibemph{#1\isdot}} {#1\isdot}}

\renewcommand*{\postnotedelim}{% \iffieldequalstr{entrysubtype}{classical} {} {\addcomma}% \addspace}

\renewbibmacro*{cite}{% \boolfalse{suppresspostnote}% \boolfalse{usevolpostnotedelim}% \global\togglefalse{usingibid}% \global\togglefalse{inentrytype}% \global\toggletrue{blx@testpostnotedelim}% \ifciteseen {\global\toggletrue{relatedseen}} {\global\togglefalse{relatedseen}}% \ifciteseen{}{\iffieldundef{pages}{}{\booltrue{suppresspostnote}}}% \iffieldundef{shorthand} {\ifciteseen{}{\bibhypertarget{\strfield{entrykey}}{}}} {}% \printtext{% \ifboolexpr{% test {\ifciteibid} and not test {\iffirstonpage} and not test {\iffieldequalstr{entrysubtype}{classical}} } {\usebibmacro{cite:ibid}} {\usebibmacro{ifciteuseshorthand} {\usebibmacro{cite:shorthand}} {\usedriver{}{cite:\thefield{entrytype}}% \ifcsstring{blx@shorthand}{intro} {\usebibmacro{shorthandintro}} {}}}}}

\begin{filecontents}{\jobname.bib} @book{Guillaum.Gnostique.SC, editor = {Guillaumont, Antoine and Guillaumont, Claire}, gender = {pm}, date = {1989}, title = {Évagre le Pontique. Le Gnostique. Ou a celui qui est devenu digne de la science}, shorttitle = {Évagre le Pontique. Le Gnostique}, location = {Paris}, keywords = {Evagrius}, series = {SC}, number = {356}, location = {Paris}, } @classictext{Evagr.Gnost.gr, author = {{Evagr. Pont. Gnost.}}, xref = {Guillaum.Gnostique.SC}, entrysubtype = {classical}, Options = {skipbib=true}, Options = {skipbiblist=true}, shorthand = {Evagr. Pont. Gnost.}, } \end{filecontents} \addbibresource{\jobname.bib} \addbibresource{biblatex-examples.bib} \begin{document} \cite[4]{Evagr.Gnost.gr}; \cite[5]{Evagr.Gnost.gr}\ \cite[6]{Guillaum.Gnostique.SC}; \cite[7]{Guillaum.Gnostique.SC}

\end{document}

Evagr. Pont. Gnost. 4; Evagr. Pont. Gnost. 5
Antoine Guillaumont and Claire Guillaumont, eds., Évagre le Pontique. Le Gnostique. Ou a celui qui est devenu digne de la science, SC 356 (Paris, 1989), 6; ibid., 7

moewe
  • 175,683