以下是我的标题
\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 中有关切换的错误。