宏在下一行创建拉丁文

宏在下一行创建拉丁文

以下是我的标题

\usepackage[latin, english]{babel}
\newcommand{\latin}[1]{\foreignlanguage{latin}{\emph{#1}}}

例句:

when I use `\latin{ex nihilo}` in a sentence it breaks the Latin onto the next line. 

输出:
当我使用
从虚无中在句子中它将拉丁语放在下一行。

但是,如果我使用\textit{ex nihilo},它会按我预期的方式输出:

输出:
当我使用从虚无中在一个句子中,它将拉丁语分解到下一行。

谁能告诉我我的宏发生了什么事情?

梅威瑟:

\documentclass[a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[top=1.7cm,bottom=1.3cm,left=1.9cm,right=1.9cm]{geometry}
\sloppy
\parindent=0cm
\hyphenation{}
\hyphenpenalty=10000
\exhyphenpenalty=10000
\interfootnotelinepenalty=10000
\usepackage[style=oscola,terseinits=true,ibidtracker=false,indexing=cite,citereset=chapter,backend=biber]{biblatex}
\usepackage[style=british]{csquotes}
\usepackage[colorlinks=true,breaklinks]{hyperref}
\usepackage[latin, english]{babel}
\newcommand{\latin}[1]{\foreignlanguage{latin}{\emph{#1}}}
\begin{document}
This is a test example\latin{ex nihilo} to see what happens.
\end{document}

答案1

我可以用以下最小示例重现此问题:

\documentclass[a4paper]{report}
\usepackage[english]{babel}

\usepackage[
  style=oscola,
]{biblatex}

\begin{document}

This is a test example\foreignlanguage{english}{ex nihilo} to see what happens.

\end{document}

如果我将其注释掉style=oscola(顺便说一下,在 LaTeX 运行期间会产生一些错误),则\foreignlanguage被推到新行的问题就会消失。

解决方案:不要使用style=oscola,因为它有缺陷。

更多信息:使用 TeX Live 2017 编译示例不会显示问题;使用 TeX Live 2018 编译时没有出现错误oscola,但问题仍然出现。使用当前的 TeX Live 2019 时,我也会遇到

! Package biblatex Error: Option 'url' already defined.

See the biblatex package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.135   \settoggle{bbx:url}{#1}}

? 

! Package biblatex Error: Option 'doi' already defined.

See the biblatex package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.137   \settoggle{bbx:doi}{#1}}

? 

! Package biblatex Error: Option 'eprint' already defined.

See the biblatex package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.139   \settoggle{bbx:eprint}{#1}}

? 

不知何故, 中偷偷出现了两条空行和三条未受保护的结束行\abx@extras@english。它们是由 中的空行和缺失引起的%english-oscola.lbx以下是修复版本与 的差异。

109,110c109
<        \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}}
<
---
>        \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}}%
129,130c128
<        \printfield{extrayear}}}}}}
<
---
>        \printfield{extrayear}}}}}}%
145c143
<        \printfield{extrayear}}}}}}
---
>        \printfield{extrayear}}}}}}%

您应该将该错误报告给 的维护人员oscola

暂时,您可以修补有问题的命令。

\documentclass{article}
\usepackage[latin,english]{babel}

\usepackage[
  style=oscola,
]{biblatex}

\makeatletter
\AtBeginDocument{%
  \patchcmd{\abx@extras@english}{ \par}{}{}{}%
  \patchcmd{\abx@extras@english}{ \par}{}{}{}%
  \apptocmd{\abx@extras@english}{\relax\relax\relax}{}{}%
  \patchcmd{\abx@extras@english}{ \relax\relax\relax}{}{}{}%
}
\makeatother

\begin{document}

Example\foreignlanguage{latin}{ex nihilo}

\end{document}

但我不知道如何修复 TeX Live 2019 中有关切换的错误。

相关内容