plk / biblatex-apa

APA style for BibLaTeX
90 stars 48 forks source link

"in press" prints erroneously in German ("im druck", should be "im Druck") #180

Closed PsychicBirdy closed 1 year ago

PsychicBirdy commented 2 years ago

Finally, I managed to get the developement version of biber and biblatex(-apa) working and so I was able to catch a bug that seems to have been introduced recently.

According to the official German variant of APA style the German equivalent to "in press", "im Druck", is supposed to start lower case, in citations as well as in the reference list, just like "in press". Thus, I already added

\DeclareBibliographyStrings{%
[...]
  inpress          = {{\midsentence{}im Druck}{\midsentence{}im Druck}},

to the German language .lbxs. This works fine with TeX Live 2021 (biber 2.17 and biblatex 3.17).

\documentclass{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[backend=biber,style=apa]{biblatex}
\begin{filecontents}{\jobname.bib}
% (APA 10.1 Example 8)
@ARTICLE{10.1:8,
    PUBSTATE       = {inpress},
    AUTHOR         = {T. Pachur and B. Scheibehenne},
    TITLE          = {Unpacking Buyer-Seller Differences in Valuation from Experience},
    SUBTITLE       = {A Cognitive Modeling Approach},
    JOURNALTITLE   = {Psychonomic Bulletin \& Review}
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}

    \textcite{10.1:8}

    \printbibliography
\end{document}

prints "(im Druck)", whereas without this change it printed "(Im Druck)" in the reference list.

However, using biber 2.18 beta and biblatex 3.18 beta and the current biblatex-apa code, it prints "(im druck)". This is simply wrong. "Druck" is never supposed to begin lower case.

moewew commented 2 years ago

https://github.com/plk/biblatex-apa/commit/023baa62a163d25f2a688168f8b5b7115a960b37#diff-04309903b565b256b3336c15b12023a158cf50946e048d9e25b54281efc05140 switched a few \bibstrings to \biblcstring, which converts the whole string to lowercase. I'm guessing we want to use \bibncpstring so we can get rid of the whole \midsentence{} malarkey.

PsychicBirdy commented 2 years ago

As far as I can tell, yes, this would be a fix plus improvement.

PsychicBirdy commented 2 years ago

@moewew Well, let's do this. In ngerman.lbx, i searched for \biblcstring, found 2 instances, which seem to deal with dates, and replaced them with \bibncpstring. As far as I can see, this seems to work. I'm not so firm with all the code. Is this what you had in mind? If yes, I would fix the remaining 5 German language lbxs in the same way.

moewew commented 2 years ago

Currently, the date code in ngerman-apa.lbx uses \biblcstring, \bibcplstring and \bibstring. I don't know what the intended output in each case is, but my hunch is that it is unlikely that all three are needed. \biblcstring is particularly odd as it actively lower-cases the string.

plk commented 2 years ago

Anything left to do here? On the verge of 9.16 release when biber/biblatex latest are released.

PsychicBirdy commented 2 years ago

That's great to hear. Yes, there is something left to do. My pull request hasn't been accepted yet. Once it is, a similar change is still needed for the other 5 German language lbxs (old German spelling rules, old/new Austrian, old/new Swiss). However, it seems @moewew and me are still uncertain what to change after all as we don't know what the intended output in each case is. I tested the changes I made and this solves the problem for me. However, possibly it's more than even needed. Or even some more can be dropped if not all the commands mentioned are needed.

moewew commented 2 years ago

As I say I have no idea what the intended output is, but the \biblcstring looks odd. A quick code search suggests it is being used in lots of .lbx files and I'm assuming those were intended to be \bibncpstring. @plk I think you could do a bulk replace on all of them.

As for the \bibcplstring I have no idea.

plk commented 2 years ago

Those macros are to force the lowercased/uppercased versions of the (abbreviated) localised strings that sometimes occur in years (n.d. etc). I tried to move to \bibncpstring but it broke all of the regression tests ...

moewew commented 2 years ago

Do you have an example of output that is wrong with \bibncpstring but alright with \biblcstring? That appears very odd to me since I'd have thought that you never want to lowercase the whole string (after all, if that's what you have to do, why do you not give the string in lowercase in the .lbx file in the first place)?

moewew commented 2 years ago

I just had a look at biblatex-apa-test-references.bib and the only examples that I found that would be affected were "n.d." and "in press". But I couldn't see any difference before and after.

plk commented 2 years ago

My mistake - it's fine with \bibncpstring. This has been replaced. The only uses of \bibcplstring are to enforce capitalisation of year divisions.