当我在文档中使用小型大写字母时,它们有时会超出我使用软件包定义的边距geometry
。名称“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}
取决于此名称如何连字符)。
答案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 已经解决了这个问题,所以只要使用正确的工具,而不必“手动”更改字体,它就可以按预期工作。