Библиография с турецким Бабелем, в которой отсутствует имя автора

Библиография с турецким Бабелем, в которой отсутствует имя автора

Я пытаюсь подготовить свою библиографию, но когда я пытаюсь добавить некоторые ссылки, они не содержат авторов ссылок.

Вот мой main.text:

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{geometry}

\geometry{top=30mm,right=30mm,left=30mm,bottom=30mm}

\usepackage{setspace}
\usepackage{anyfontsize}
\usepackage{multicol}
\usepackage{ragged2e}
\usepackage{amsmath}
\usepackage{mathptmx}
\usepackage[english,turkish]{babel}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage[style=authoryear]{biblatex}
\addbibresource{biblio.bib}

\begin{document}
\shorthandoff{=!}
%\input{Chapters/Titlepage}
%\input{Chapters/Titlepage2}
%\input{Chapters/Abstract}
\input{Chapters/Micromechanics of Lamina}
\input{Chapters/MacroMechanics of Lamina}
\input{Chapters/Macromechanical Analysis of Laminates}

\printbibliography

\end{document}

Это моя библиография, на данный момент она представлена ​​только в демонстрационных целях.

@article{knuth:1984,
title={Literate Programming},
author={Donald, Knuth},
journal={The Computer Journal},
volume={27},
number={2},
pages={97--111},
year={1984},
publisher={Oxford University Press}
}

И вот что я получаю в результате:

введите описание изображения здесь

решение1

Проблема здесь в babel-turkishнастройках сокращенной записи. babel-turkishделает =активным, что тормозит многие пакеты ключ-значение. Поскольку biblatexиспользует синтаксис ключ-значение для имен, эти ошибки и не будут отображаться.

В этом примере проблемные сокращения для !=отключены после \begin{document}, но это немного поздно для biblatex, так как он считывает .bblфайл (содержащий все библиографические данные, в том числе имена) в \begin{document}.

Благодаря новой системе управления крючками мы можем точно настроить размещение \shorthandoffвнутри \begin{document}.

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[english,turkish]{babel}
\usepackage[T1]{fontenc}
\usepackage[style=authoryear]{biblatex}
\addbibresource{biblatex-examples.bib}

\AtBeginDocument[biblatex/shorthands]{%
  \shorthandoff{=!}%
}

\DeclareHookRule{begindocument}{biblatex/shorthands}{before}{biblatex}

\begin{document}
Lorem \autocite{sigfridsson}

\printbibliography
\end{document}

Лорем (Зигфридссон и Райд 1998)

Другой способ решения этой проблемы — использовать shorthandsопцию явного включения тех сокращений, которые нам нужны. Турецкие наборы :, =и !. Если мы отключим, !=то останемся с :, поэтому мы говорим shorthands=:. Если вам даже не нужно активное двоеточие, используйте shorthands=off.

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[english, turkish, shorthands=:]{babel}
\usepackage[T1]{fontenc}
\usepackage[style=authoryear]{biblatex}
\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson}

\printbibliography
\end{document}

Связанный контент