微型

微型

当我在文档中使用小型大写字母时,它们有时会超出我使用软件包定义的边距geometry。名称“Lambrecht”的下划线部分(如下图所示)不应该出现在边距之外。应该将单词拆分;有什么办法可以解决这个问题吗?

这张图片说明了我对“Lambrecht”这个名字的疑问。

以下是我的序言:

documentclass[a4paper, 12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{layout}
\usepackage{fancyhdr}
\usepackage{gb4e}
\noautomath
\usepackage{booktabs}
\usepackage{enumerate}
\usepackage{verbatim}
\usepackage{indentfirst}
\usepackage{mathptmx}
\usepackage[a4paper, top=20mm, bottom=20mm, left=25mm, right=35mm]{geometry}
\usepackage{setspace}

以下是我所关注的文本段落的来源:

 In contrast, the direct object in (10b) is syntactically independent from the main clause. Since 
  ``dislocated constituents are by definition optional sentence elements'' (\textsc{Lambrecht} 2001: 
 1065), leaving out \textit{This movie} in (10b) will not cause structural ill-formedness: 

我将非常感激有关如何解决此问题的任何建议。

答案1

微型

加载microtype-package 确实很有帮助。我擅自缩短了示例,使其真正变得简洁:

\documentclass[
    a4paper,
    12pt
]{article}

%%% This you don't need anymore %%%
%%% \usepackage[utf8]{inputenc} %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage[english]{babel}
\usepackage[T1]{fontenc}

\usepackage{mathptmx}
\usepackage[a4paper, top=20mm, bottom=20mm, left=25mm, right=35mm]{geometry}
\usepackage{microtype}

\begin{document}

\section{Introduction}

In contrast, the direct object in (10b) is syntactically independent from 
the main clause. Since ``dislocated constituents are by definition 
optional sentence elements'' (\textsc{Lambrecht} 2001: 1065), leaving 
out \textit{This movie} in (10b) will not cause structural ill-formedness: 

\end{document}

\-

如果您仍然得到过满的水平盒子,您可以尝试分配连字符标记,如下所示:(\textsc{Lam\-b\-recht}取决于此名称如何连字符)。

Microtype 拯救了一切

答案2

问题在于 LaTeX 没有使用连字符第一的在某些情况下。(我不知道这是这种情况\textsc。)

以下是一个较短且页面较小的示例文档:

\documentclass[a5paper]{article}

\begin{document}
Here is a shorter example.
Here is a shorter example.
Here is a shorter example.
Here is myyyyyy shorter example
(\textsc{Lambrecht} 2001: 1065).

\end{document}

这给出

在此处输入图片描述

单词突出。您可以做的一件事是,在它前面添加一些不可见的东西,就像@moewe 在评论中建议的那样。它可以与 一起使用(\hspace{0pt}\textsc{Lambrecht} 2001: 1065)

不过,在每个地方都输入会很丑陋。但无论如何,最好引入一个用于编写这些名称的新命令,并使用该命令代替\textsc。所以在这个版本中,我定义了一个\authname用于编写作者姓名的命令,它可以在一个地方处理这个问题。

\documentclass[a5paper]{article}

\newcommand\authname[1]{\hspace{0pt}\textsc{#1}}

\begin{document}
Here is a shorter example.
Here is a shorter example.
Here is a shorter example.
Here is myyyyyy shorter example
(\authname{Lambrecht} 2001: 1065).

\end{document}

这给出了更好的结果:

在此处输入图片描述

下一个建议:使用 Biblatex 来处理你的参考文献。那么你的 LaTeX 可能看起来像这样:

\documentclass[a5paper]{article}
\usepackage[style=authoryear]{biblatex}
\addbibresource{sc.bib}

\begin{document}
Here is a shorter example.
Here is a shorter example.
Here is a shorter example.
Here is myyyyyy shorter example
\parencite[1065]{lambrecht}.

\end{document}

这需要一个文件sc.bib来定义系统应该知道的有关lambrecht参考的内容(例如其标题和年份 2001 等)。该命令\parencite{lambrecht}会在该文件中插入一个括号引用,指向我们称为“lambrecht”的内容。(此处它与一个可选参数一起使用,同时指明页码。)

这不会立即按照您的意愿工作,因为使用小型大写字母不是默认设置,并且默认情况下页面引用的书写方式也不同。因此实际上您会得到

在此处输入图片描述

因此您需要对 Biblatex 进行一些定制,如下所示:

\documentclass[a5paper]{article}
\usepackage[style=authoryear]{biblatex}
\addbibresource{sc.bib}

% Authors in small caps
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
% Page numbers after colon
\renewcommand{\postnotedelim}{%
  \iffieldpages{postnote}{\addcolon\space}{\addcomma\space}}
\DeclareFieldFormat{postnote}{#1}

\begin{document}
Here is a shorter example.
Here is a shorter example.
Here is a shorter example.
Here is myyyyyy shorter example
\parencite[1065]{lambrecht}.

\end{document}

得出的结果是:

在此处输入图片描述

现在一切都好了。那么连字符问题怎么了?好吧,我想 Biblatex 已经解决了这个问题,所以只要使用正确的工具,而不必“手动”更改字体,它就可以按预期工作。

相关内容