Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

set language per field #144

Closed
LukasCBossert opened this issue Apr 3, 2018 · 6 comments
Closed

set language per field #144

LukasCBossert opened this issue Apr 3, 2018 · 6 comments

Comments

@LukasCBossert
Copy link
Owner

Gibt es eigentlich die Möglichkeit, für ein Feld (eventdate) die Sprache zu bestimmen?

Im folgenden MWE sollen die eventdate-Einträge in der Sprache von hyphenrules ausgegeben werden (also in der Sprache des jeweiligen Eintrages).
Es funktioniert, wenn ich das Feld langid mit der Sprache verwende aber dann werden alle bibstrings umgestellt, was nicht wünschenswert ist.

Hast du wieder eine Idee @moewew ?


\documentclass[french,english,ngerman]{scrartcl}
\usepackage{filecontents,babel}
\begin{filecontents}{\jobname.bib}

@InProceedings{Calvet1993,
  author       = {Calvet, Yves},
  title        = {Kition, travaux de la mission française},
  booktitle    = {Kinyras},
  year         = {1993},
  editor       = {Yon, Marguerite},
  subtitle     = {Kition, French Expedition},
  booksubtitle = {L’Archéologie française à Chypre/French Archaeology in Cyprus},
  eventtitle   = {Table-ronde tenue à Lyon},
  eventdate    = {1991-11-05/1991-11-06},
hyphenrules={french},
  volume       = {1},
  series       = {Travaux de la Maison de l’Orient},
  number       = {22},
  publisher    = {De Boccard},
  location     = {Lyon},
  pages        = {107--138},
}

@InProceedings{Padgett2009,
  author     = {Padgett, John Michael},
  title      = {Attic Imports at Marion},
  booktitle  = {Athenian Potters and Painters II},
  year       = {2009},
  editor     = {Oakley, John Howard and Palangia, Olga},
  subtitle   = {Preliminary Results of the Princeton University Archaeological Expedition to Polis Chrysochous, Cyprus},
  eventtitle = {International Conference},
  eventdate  = {2007-03-28/2007-03-30},
  hyphenrules = {english},
  venue      = {American School of Classical Studies at Athens},
  publisher  = {Oxbow Books},
  location   = {Oxford},
  pages      = {220--231},
}

@InProceedings{Egetmeyer,
  author     = {Egetmeyer, Markus and Karnava, Artemis and Landenius Enegren, Hedvig and Perna, Massimo},
  title      = {IG XV 1, Inscriptiones Cypri Syllabicae},
  booktitle  = {Aegean Scripts},
  editor     = {Landenius Enegren, Hedvig and Nosch, Marie-Louise},
  subtitle   = {The completion of Fasciculus I, Inscriptiones Amathuntis, Curii et Marii},
  eventtitle = {14th Mycenological Colloquium},
  eventdate  = {2015-09-02/2015-09-07},
  venue      = {Kopenhagen},
  hyphenrules = {english},
  pubstate   = {inpress},
}

\end{filecontents}
\usepackage[
  backend=biber,
  style=archaeologie,
 ]{biblatex}
\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}


\printbibliography
\end{document}  
@moewew
Copy link
Contributor

moewew commented Apr 3, 2018

Ich sollte langsam schlafen gehen, daher nur so viel:

  • Das Feld hyphenrules gibt es gar nicht, daher wird es auch komplett ignoriert und landet nicht in der .bbl-Datei. Was biblatex betrifft, kommt also die Sprache der Beispieleinträge gar nicht an.
  • Wenn Du langid benutzt (das Feld gibt es), dann kommt autolang=other zum Tragen.
    autolang=other,%

    Wenn Du nicht möchtest, dass Einträge mit langid-Feld ihre Sprache ändern, dann solltest Du an der autolang-Einstellung drehen.
  • Es gibt keine vorgefertigte Lösung, nur einzelne Felder in einer von der Dokumentensprache abweichenden Eintragssprache zu setzen. Voreingestellt geht nur alles (autolang=other), ausschließlich die Silbentrennung (autolang=hyphen) oder nichts (autolang=none) in Eintragssprache. Möglich sein sollte es aber.

@moewew
Copy link
Contributor

moewew commented Apr 4, 2018

Also prinzipiell geht das

\documentclass[french,english,ngerman]{scrartcl}
\usepackage{filecontents,babel}
\begin{filecontents}{\jobname.bib}
@InProceedings{Calvet1993,
  author       = {Calvet, Yves},
  title        = {Kition, travaux de la mission française},
  booktitle    = {Kinyras},
  year         = {1993},
  editor       = {Yon, Marguerite},
  subtitle     = {Kition, French Expedition},
  booksubtitle = {L’Archéologie française à Chypre/French Archaeology in Cyprus},
  eventtitle   = {Table-ronde tenue à Lyon},
  eventdate    = {1991-11-05/1991-11-06},
usera = {french},
  volume       = {1},
  series       = {Travaux de la Maison de l’Orient},
  number       = {22},
  publisher    = {De Boccard},
  location     = {Lyon},
  pages        = {107--138},
}

@InProceedings{Padgett2009,
  author     = {Padgett, John Michael},
  title      = {Attic Imports at Marion},
  booktitle  = {Athenian Potters and Painters II},
  year       = {2009},
  editor     = {Oakley, John Howard and Palangia, Olga},
  subtitle   = {Preliminary Results of the Princeton University Archaeological Expedition to Polis Chrysochous, Cyprus},
  eventtitle = {International Conference},
  eventdate  = {2007-03-28/2007-03-30},
usera = {english},
  venue      = {American School of Classical Studies at Athens},
  publisher  = {Oxbow Books},
  location   = {Oxford},
  pages      = {220--231},
}

@InProceedings{Egetmeyer,
  author     = {Egetmeyer, Markus and Karnava, Artemis and Landenius Enegren, Hedvig and Perna, Massimo},
  title      = {IG XV 1, Inscriptiones Cypri Syllabicae},
  booktitle  = {Aegean Scripts},
  editor     = {Landenius Enegren, Hedvig and Nosch, Marie-Louise},
  subtitle   = {The completion of Fasciculus I, Inscriptiones Amathuntis, Curii et Marii},
  eventtitle = {14th Mycenological Colloquium},
  eventdate  = {2015-09-02/2015-09-07},
  venue      = {Kopenhagen},
usera = {english},
  pubstate   = {inpress},
}
\end{filecontents}
\usepackage[
  backend=biber,
  style=archaeologie,
 ]{biblatex}
\addbibresource{\jobname.bib}

% by Martin Scharrer https://tex.stackexchange.com/a/15014/35864
\newenvironment{fullexpotherlanguage}[1]{%
  \begingroup
  \edef\temp{\endgroup\noexpand\otherlanguage{#1}}%
  \temp
}{\endotherlanguage}

\renewbibmacro{event+venue+date}{%
  \setunit{\adddot\addspace}%
  \printfield{eventtitle}%
  \setunit*{\addspace}%
  \printfield{venue}%
  \setunit*{\addspace}%
  \begingroup
  \begin{fullexpotherlanguage}{\thefield{usera}}%
  \printeventdate
  \end{fullexpotherlanguage}%
  \endgroup
  \newunit
}

\begin{document}
\nocite{*}
\printbibliography

\selectlanguage{english}
\printbibliography
\end{document}  

eigentlich hätte ich gerne langid genommen statt usera. Aber da ich mir über den Status von autolang nicht ganz sicher bin (siehe mein letzter Kommentar) habe ich das zunächst anders gelöst. Wenn Du das übernehmen möchtest, solltest Du zunächst über die gewünschte autolang-Option nachdenken. Wenn sich dabei herausstellt, dass langid wieder zur Verfügung steht, solltest Du das nutzen. Ansonsten ist es am besten, ein neues Feld in der .dbx definieren.

@LukasCBossert
Copy link
Owner Author

Vielen Dank. Ich wäre wohl besser auch ins Bett gegangen, dann wäre mir das nicht-auslesen von hyphenrule aufgefallen.

langid wird erstmal nicht zur Verfügung stehen, weil ansonsten die bibstrings nicht wie gewünscht ausgegeben werden.

Ich werde wohl das Feld eventdatelanguage in der .dbx definieren, dann kann der Nutzer das nach Belieben steuern. Ggf noch eine Option, sodass man diese Sprachausgabe auch wieder ausschalten kann.

@LukasCBossert
Copy link
Owner Author

\documentclass[french,english,italian,ngerman]{scrartcl}
\usepackage{filecontents,babel}
\begin{filecontents}{\jobname.bib}
@InProceedings{Calvet1993,
  author       = {Calvet, Yves},
  title        = {Kition, travaux de la mission française},
  booktitle    = {Kinyras},
  year         = {1993},
  editor       = {Yon, Marguerite},
  subtitle     = {Kition, French Expedition},
  booksubtitle = {L’Archéologie française à Chypre/French Archaeology in Cyprus},
  eventtitle   = {Table-ronde tenue à Lyon},
  eventdate    = {1991-11-05/1991-11-06},
eventdatelanguage = {french},
  volume       = {1},
  series       = {Travaux de la Maison de l’Orient},
  number       = {22},
  publisher    = {De Boccard},
  location     = {Lyon},
  pages        = {107--138},
}

@InProceedings{Padgett2009,
  author     = {Padgett, John Michael},
  title      = {Attic Imports at Marion},
  booktitle  = {Athenian Potters and Painters II},
  year       = {2009},
  editor     = {Oakley, John Howard and Palangia, Olga},
  subtitle   = {Preliminary Results of the Princeton University Archaeological Expedition to Polis Chrysochous, Cyprus},
  eventtitle = {International Conference},
  eventdate  = {2007-03-28/2007-03-30},
eventdatelanguage = {english},
  venue      = {American School of Classical Studies at Athens},
  publisher  = {Oxbow Books},
  location   = {Oxford},
  pages      = {220--231},
}

@InProceedings{Egetmeyer,
  author     = {Egetmeyer, Markus and Karnava, Artemis and Landenius Enegren, Hedvig and Perna, Massimo},
  title      = {IG XV 1, Inscriptiones Cypri Syllabicae},
  booktitle  = {Aegean Scripts},
  editor     = {Landenius Enegren, Hedvig and Nosch, Marie-Louise},
  subtitle   = {The completion of Fasciculus I, Inscriptiones Amathuntis, Curii et Marii},
  eventtitle = {14th Mycenological Colloquium},
  eventdate  = {2015-09-02/2015-09-07},
  venue      = {Kopenhagen},
eventdatelanguage = {italian},
  pubstate   = {inpress},
}
\end{filecontents}
\usepackage[
  backend=biber,
  style=../biblatex-archaeologie/archaeologie,
 ]{biblatex}
\addbibresource{\jobname.bib}
\newbool{bbx:eventdatelanguage}

\newenvironment{fullexpotherlanguage}[1]{%
  \begingroup
  \edef\temp{\endgroup\noexpand\otherlanguage{#1}}%
  \temp
}{\endotherlanguage}

\renewbibmacro{event+venue+date}{%
  \setunit{\adddot\addspace}%
  \printfield{eventtitle}%
  \setunit*{\addspace}%
  \printfield{venue}%
  \setunit*{\addspace}%
\ifbool{bbx:eventdatelanguage}
  {\begingroup
  \begin{fullexpotherlanguage}{\thefield{eventdatelanguage}}%
  \printeventdate
  \end{fullexpotherlanguage}%
  \endgroup}
  {\printeventdate}
  \newunit
}
\booltrue{bbx:eventdatelanguage}
\begin{document}
\nocite{*}
\printbibliography

\selectlanguage{english}
\printbibliography
\end{document}  

und

\DeclareDatamodelFields[type=field,datatype=verbatim]{eventdatelanguage}
\DeclareDatamodelEntryfields[proceedings,inproceedings]{eventdatelanguage}

Spricht etwas deiner Meinung nach gegen diesen Code?

LukasCBossert pushed a commit that referenced this issue Apr 4, 2018
@moewew
Copy link
Contributor

moewew commented Apr 4, 2018

Wenn Du langid nicht nutzen möchtest, dann wirst Du es so machen müssen. Vielleicht kannst Du in Deinem Code noch die Quelle von fullexpotherlanguage angeben, das habe ich von https://tex.stackexchange.com/a/15014/35864 geklaut.

Ich verstehe nur nicht ganz, ob Du wirklich die Option autolang=other möchtest. Wenn Du nicht möchtest, das Einträge ihre Sprache ändern, wenn sie ein langid-Feld haben, dann ist autolang=other nicht die richtige Wahl.

Nimm als Beispiel Deinen Eintrag Calvet1993, der ist komplett in Französisch, daher ist es nicht abwegig, dem auch langid={french}, zuzuweisen. Mit der jetzigen Einstellung autolang=other würden alle Strings ins Französische übersetzt. Wenn das nicht gewünscht ist, solltest Du autolang=hyphen (nur französische Silbentrennung - gut für lange Titel etc.) oder autolang=none alles auf Dokumentensprache auswählen. Der Stil würde dann zur Zeit nur die gewünschte Ausgabe in Dokumentensprache geben, wenn die Nutzerin das langid-Feld nicht befüllt. Darauf solltest Du Dich nicht verlassen.

LukasCBossert pushed a commit that referenced this issue Apr 4, 2018
@LukasCBossert
Copy link
Owner Author

Du hast vollkommen Recht, ich hatte mich bei autolang vertan, es soll autolang=hyphen gelten.
Jetzt kann man auch langid nutzen.

Quelle wurde nachgetragen.

Vielen Dank hierfür!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants