Closed padalev closed 5 years ago
Thank you for the report.
Interestingly, PL is German(-speaking?) and biblatex
was released at a time where the whole Bologna process was already going (early initial release in 2006, v1.0 in 2010), so I guess he would have known about this...
I agree that certainly nowadays Masterarbeit is what you would expect. The question is if we can break backwards compatibility here. Usually we allow localisation files to change on the assumption that the new translations are stylistically superior while still maintaining the intended meaning (or at least being a good translation of the concept the string stands for). Here it is slightly different as you point out...
Yes. I have thought about that too. I think you might have to consider what is the bigger damage that can be done.
I you do not change it to a more modern translation you risk that people still use it accidentally in believe that it would translate to "Masterarbeit" without noticing.
If you change it you might have problems with people still believing it to translate to Magisterarbeit. Though there is no other option for a real "Masterarbeit" and also this change would only affect people that are updating there latex distribution while working on some document. Which is a risk, but I believe that future users that download a fresh latex distribution would rather expect the translation to be "Masterarbeit" Also the change obviously wouldn't affect already finished and/or published documents.
OK, we'll see what others have to say about this.
There probably is not going to be a new release in the immediate future anyway, so you (or anyone else bothered by this) should just use
\DefineBibliographyStrings{german}{
mathesis = {Masterarbeit},
}
in the meantime.
In terms of damage, there are a few things that make the decision hard.
mathesis
is 'Masterarbeit' today..bib
file you know gave the correct answer earlier, it is slightly (but only very slightly) harder to argue that you should be double-checking the output again (after all it use to do the right thing). (Incidentally, I believe that in this situation it is better to let things go wrong noisily - throwing fatal errors etc. - than to push on silently trying to fix things or simply ignoring stuff that used to work. This does not apply localisation that much, but to usual program behaviour, cf. https://github.com/plk/biblatex/issues/372.)I think it would introduce a severe compatibility problem. I have many bib databases consisting of @mathesis
entries, and I certainly don't expect their output to change without my doing. If I cite something I have recorded as a "Magisterarbeit" (and I do cite them also post-Bologna), I expect that the entry will be correct. Masterarbeit would be incorrect.
@jspitz Thank you for confirming my fear.
As unfortunate and awkward or even wrong as it is from today's perspective that mathesis
is "Magisterarbeit", I don't think we can change things now.
I'm closing this issue as won't fix for now. While our de facto policy seems to be that changes to localisation strings are sort of acceptable when they are about stylistic issues (which in itself is already problematic from a backwards compatibility perspective), I don't think we can change this particular string since it would significantly change the meaning. If it turns out that there are many people who think this should be addressed and the pressure mounts we will probably have to discuss this again and might (have to) come to a different conclusion, but for now I feel that we should stick to the status quo, as painful as it might be.
Just had this same issue and think Magisterarbeit is wrong and should be fixed. Regarding backwards compatibility I see the issue but think that when the entry is called masterthesis the correct translation should be used - it is in my opinion wrong to continue suffering because of an old mistake. Issues like this make using latex for non pro-users extremely difficult
It's not a mistake. Before the academic reforms commonly called "Bologna Process", Magisterarbeit was the correct German term for what was known as "master thesis" in the Anglo world.
It's not a mistake. Before the academic reforms commonly called "Bologna Process", Magisterarbeit was the correct German term for what was known as "master thesis" in the Anglo world.
I don't know how things were translated 15 years ago but it is not true in todays standards. The correct translation for masterthesis is Masterarbeit. As OP said a Magisterarbeit is completely different to what a masterthesis is. Keeping this just causes people to be forced to adjust it manually (it's why I found this issue in the first place) - not every Latex user is able to do this. In my opinion the "correct" translation at the time of compiling should be used. If you have masterthesis entries in your bibliographies that you expect to be translated into Magisterarbeit and you compile them today you should be the one changing this manually and not new users.
What has been a Magisterarbeit 15 years ago still is a Magisterarbeit and no Masterarbeit.
One of LaTeX's strengths is that does not change things behind your back.
True - but I assume the number of people compiling documents in todays standards to be vastly larger and these people expect a masterthesis to be translated as Masterarbeit (As I said I just had this exact problem and wondered why a Magisterarbeit is used as translation as it seems obviously wrong to me). I expect the number of compilations that intend to have masterthesis be translated with Magisterarbeit is miniscule.
This is just a comment by a standard user and you guys can obviously decide what the right thing to do is. I just wanted to let you know that this has caused frustration with friends of mine and did even puzzle me.
With this argument you can completely throw any backwards compatibility attempt overboard. This might keep new users happy, but will frustrate long-term users.
The only way to get out of this situation here, IMHO, is to introduce another thesis type which is bound to the post-Bologna type of theses (in EU) and linked to mathesis
by default. Or maybe a per-language option once this is implemented (#939), but this also needed to be opt-in.
I'm afraid there is no good solution here that will make everyone happy.
As mentioned above, currently I am in favour of keeping "Magisterarbeit" as unexpected, unfortunate (or maybe even wrong) it may be from today's perspective. My main motivation here is backwards compatibility. Admittedly, biblatex
has had its fair share of backwards-compatibility-sensitive issues in the past (https://github.com/plk/biblatex/issues/372 comes to mind), but this was usually only related to style coding, user-level functionality (if there is such a thing) has remained quite stable (true, there were changes, but we try hard to ensure backwards compatibility there): A change from "Magisterarbeit" to "Masterarbeit" would not only mean that old documents produce semantically different results now (if you compile a document using biblatex
from 15 years ago now, you may or may not encounter other issues as well, depending on how much you or the style you use ventured into lower-level terrain) it would also mean that .bib
files that have been used and re-used for years would suddenly result in different output. I think it is fair to expect that users double check the output they get the first time they add an entry to their .bib
file or use it with a new style (this is basically how you, @DanielMarcato, noticed the issue), but I think it is harder to argue that people like @jspitz who once convinced themselves that their entries produce the expected output should be anxiously checking for changes to such a fundamental change in meaning.
Bottom line: From today's perspective "Magisterarbeit" is a bad choice, but the backwards compatibility issues outweigh the upsides of the change for me at the moment.
It should be said again that the required change to get "Masterarbeit" is not very complex
\DefineBibliographyStrings{german}{
mathesis = {Masterarbeit},
}
and might even be a nice introduction into learning some basics of biblatex
customisation for those who encounter this issue.
This discussion drives me to make a suggestion I entreat for quite some time. It is true that it is not complex to change a bibstring in a single document with \DefineBibliographyStrings
, but things can get more complicated in case we want to do the same globally, for all ones documents, e.g. in a biblatex config file or in a general settings file one somehow chooses to load. And here because \DefineBibliographyStrings
overrides both the full and the abbreviated version of the string defined in \DeclareBibliographyStrings
, and the later can only be used in localisation files. But we cannot simply override both forms of the string with a single one, irrespective of how abbreviate
might be set in one or another document, or how style developers might choose to use those two forms (A style might choose to use the abbreviated form in some places, and long form somewhere else. In fact, biblatex
grants this possibility currently with \biblstring
and \bibsstring
).
So, my suggestion would be that \DefineBibliographyStrings
can also receive the two forms, as \DeclareBibliographyStrings
. I suppose that, if given a single one, current behavior could, and for backwards compatibility should, be kept.
This would allow one to globally and reliably change a bibstring, in case they don't like the defaults. And would also make much more manageable to deal with backward incompatibility issues, in case a change is decided to be made upstream. (Suppose the change to "Masterarbeit" had been taken today, what would you have recommended Jürgen do? Keep a patched version of "german.lbx" in his texmf?). And I think it is sensible to assume that disputes over bibstrings are bound to come up every once in a while.
I would be in favour of this - it was never clear to me why \DefineBibliographyStrings
overrode both forms.
I always found it annoying that \DefineBibliographyStrings
overrides both the long and the short form, but I guess in this particular case the canonical answer would be to define a new .lbx
file and establish a language mapping.
\ProvidesFile{german-bologna.lbx}[2020/03/01]
\InheritBibliographyExtras{german}
\DeclareBibliographyStrings{%
inherit = {german},
mathesis = {{Masterarbeit}{Masterarbeit}},
}
\endinput
and then
\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=verbose, backend=biber]{biblatex}
\DeclareLanguageMapping{german}{german-bologna}
\addbibresource{biblatex-examples.bib}
\begin{document}
\cite{sigfridsson,loh,kant:kpv}
\printbibliography
\end{document}
Is there a safe way to test if we have one or two groups in \DefineBibliographyStrings
? We absolutely can not break
\DefineBibliographyStrings{german}{
mathesis = {Masterarbeit},
}
but we need to be able to tell it apart from
\DefineBibliographyStrings{german}{
mathesis = {{Masterarbeit}{Masterarb\adddot}},
}
Some way to counts tokens would presumably do it - if token count of \@firstofone
was equal to 2? In the current case, it would always be 1.
The thing is that the key-value processing skips braces, so from the first case we get to see Masterarbeit
and from the second we see {Masterarbeit}{Masterarb\adddot}
. It appears quite tricky to do the right thing for all of the following cases
\DefineBibliographyStrings{british}{
mathesis = {Masterarbeit},
}
\DefineBibliographyStrings{british}{
mathesis = {\"a},
}
\DefineBibliographyStrings{british}{
mathesis = {in},
}
\DefineBibliographyStrings{british}{
mathesis = {{i}{n}},
}
\DefineBibliographyStrings{british}{
mathesis = {{Masterarbeit}{Masterarbeit}},
}
Here is what I tried so far: Use \@gobbletwo
to gobble two tokens and check if the result is empty. If the result is not empty we definitely have a single string. But now we need to distinguish the cases in
, \"a
and {Masterarbeit}{Masterarbeit}
which all consist of two tokens. My first attempt was to detokenize the strings and apply \@gobbletwo
, but that doesn't quite work since it can't deal with \"a
properly (which is two tokens, but three detokenized tokens).
I'm sure it will make neither those who want to see 'Masterarbeit' nor those who need to stick with 'Magisterarbeit' happy, but what do you think about adding a warning in the .log
file when mathesis
is used in German? The warning would make people aware of the issue, but only if they need to be aware of it (i.e. if they print mathesis
in German). (A great many people don't read warnings, but we would at least warn those who do.) Of course it would be possible to disable the warning (like the warnings we issue when the Hungarian language module is loaded).
What do you think? Is it worth it or does it just add noise for no good reason?
What do you think? Is it worth it or does it just add noise for no good reason?
I'd lean towards the latter.
Probably a stupid question, but what do you do if you like to cite both in the same document? E.g. a "Masterarbeit" and a "Magisterarbeit"?
Best,
Andreas
use @thesis
with type = {Masterarbeit}
.
thanks.
Adding some thoughts to this admittedly old issue: If I understand correctly, in the past, mathesis
wasn't used consistently? So depending on the language setting, the same entry would be either cited as "Magisterarbeit" or "Master's thesis"; both not being the same?
I'd argue that this inconsistent past behavior is flawed in the first place. Even then, it was not correct to do that (correct me please in case this is wrong).
So in order to fix this, one would need an additional type, explicitly being for either the legacy "Magisterarbeiten", or for the "Master's theses". Since the old way already was wrong, I suggest adding an additional type for "Magisterarbeiten" and use mathesis
only for real "Master's theses".
I'd say that, previous to the "Bologna reform", the German equivalent to (English) Master's Thesis was Magisterarbeit. To the best of my knowledge, there hasn't been a "Masterarbeit" in Germany before this. And the proposed change would really break backwards compatibility. So I am still very much opposed to the proposal.
But they were never the same, right? So also back then, it was a mistake to translate/use mathesis
differently based on the location/language setting.
Imagine back then, a German author kept track of English Master's theses. In case they use English language (for example a scientific publication), they will be cited as Master's thesis; while the same titles from the same library would have been cited wrongly (!) as Magisterarbeit, in case the author used the German language (for example for a thesis). Same the other way round. Back then, a German Magisterarbeit would have been wrongly cited as "Master's thesis" in English publications, which had been pretty misleading, I suppose.
Again, please correct me in case I am wrong. Probably, the distinction (that has always been there, IMHO) got much more important after the introduction of Master's theses to Germany. But I think, the problem has always been there.
Note, that the proposed change would only break backwards compatibility for the German users. But okay, maybe we need to introduce two new types, then, to finally fix this problem? One for Master's theses and one for Magisterarbeiten, keeping the old (IMHO always broken) "hybrid" one for backwards compatibility.
I think we can agree that the current system is not working for the current usage, as it will lead to wrong citations based on the location/language, which should never happen and is IMHO even worse (because I see this as a bug) than caring about backwards compatibility.
use
@thesis
withtype = {Masterarbeit}
.
This won't work nicely for multi-language usage, correct? So for English documents would also say "Masterarbeit".
But they were never the same, right?
They have been the (most) analogous genre in the respective academic cultures.
So also back then, it was a mistake to translate/use
mathesis
differently based on the location/language setting.
Don't think so.
Imagine back then, a German author kept track of English Master's theses. In case they use English language (for example a scientific publication), they will be cited as Master's thesis; while the same titles from the same library would have been cited wrongly (!) as Magisterarbeit, in case the author used the German language (for example for a thesis). Same the other way round. Back then, a German Magisterarbeit would have been wrongly cited as "Master's thesis" in English publications, which had been pretty misleading, I suppose.
You can do the very same argument for "PhD thesis" vs. "Dissertation" or "Doktorarbeit", as the doctoral thesis in the German speaking world is significantly different from the PhD thesis (due to the different academic cultures where one has a second thesis, the Habilitation).
I think we can agree that the current system is not working for the current usage, as it will lead to wrong citations based on the location/language, which should never happen and is IMHO even worse (because I see this as a bug) than caring about backwards compatibility.
No, I don't agree with that. I don't see why "Masterarbeit" as translating some English "Master's Thesis" is so much more correct than "Magisterarbeit". Strictly speaking, you should probably not translate such genre names at all between different academic cultures. In any case, the change would break basically all previous records people have made in this category.
One feasible solution, I think, would be an option to switch between the two translations, with the current default as default and the possibility to opt-out to "Masterarbeit".
use
@thesis
withtype = {Masterarbeit}
.This won't work nicely for multi-language usage, correct? So for English documents would also say "Masterarbeit".
Correct. If you need localization, you need to adapt the bibstring in the style file or the preamble of your document:
\DefineBibliographyStrings{ngerman}{mathesis = {Masterarbeit}}
But this will overwrite all entries of that type. It would be good to have the possibility to make a copy of an existing bibstring (which inherits all definitions), and then be able to redefine a translation, something like:
\LetBibliographyString{mathesis-new}{mathesis}
\DefineBibliographyStrings{ngerman}{mathesis-new = {Masterarbeit}}
but this is not possible currently AFAICS.
I have noticed while writing my own thesis that when using the "@mastersthesis" entrytype it translates to "Magisterarbeit" in German. But actually a masters thesis in German is just a Masterarbeit. A Magister is a completely different type of Studies which is quite uncommon nowadays. I'm quite fine with just using the "@thesis" type, but this can really come as a surprise when a master thesis is suddenly described as "Magisterarbeit". Solution: As I see it in the file german.lbx the line
mathesis = {{Magisterarbeit}{Magisterarb\adddot}},
should be changed tomathesis = {{Masterarbeit}{Masterarb\adddot}},