我希望能够对文本宽度进行一次性调整,以便标题(或副标题)完全出现在一行上。
考虑 MWE
\documentclass[12pt]{article}
\usepackage{amsthm,latexsym,amssymb,amsmath,verbatim}
\oddsidemargin -8pt \evensidemargin -15pt \topmargin -25pt
\headheight -5pt \headsep 0pt \textheight 9.5in \textwidth 5.25in
\parskip 10pt
\usepackage{scalefnt}
\usepackage{xcolor}
\usepackage{lipsum}
\begin{document}
\thispagestyle{empty}
\begin{LARGE}
\noindent{\textcolor{red}{\textbf{\textsl{Title, Whose Length is Fine}}}}
\vspace{5pt}
\noindent{\textcolor{red}{\textbf{\textsl{Subtitle Whose Length is a Little Too Long}}}}
\end{LARGE}
\large
\vspace*{15pt}
\lipsum[13]
\end{document}
输出
问题:如何才能强制语句“字幕的长度有点太长”出现在同一行上,同时又不影响文档其余部分 5.25 英寸的文本宽度?
谢谢。
答案1
最直接的方法是将字幕放在 中\mbox
。然后您将收到框满警告,这可能是一件好事,但可能会很烦人。该命令\mbox
基于\makebox
将创建给定宽度的框,因此要抑制警告,您可以将字幕放在\makebox[0pt][l]{...}
零宽度的框中,并将内容左对齐:
\documentclass[12pt]{article}
\oddsidemargin -8pt \evensidemargin -15pt \topmargin -25pt
\headheight -5pt \headsep 0pt \textheight 9.5in \textwidth 5.25in
\parskip 10pt
\usepackage{xcolor}
\usepackage{lipsum}
\begin{document}
\thispagestyle{empty}
\begin{flushleft}
\LARGE\color{red}\bfseries\slshape
Title, Whose Length is Fine\\[1ex]
\makebox[0pt][l]{Subtitle Whose Length is a Little Too Long}
\end{flushleft}
\large
\medskip
\lipsum[13]
\end{document}
我还尝试简化标记的其他部分,将所有标题材料放在中flushleft
,从而避免\noindent
使用命令,并首先放置字体选择和颜色。
答案2
\parbox
对于这种情况来说,\mbox
有点过度,并且很难推广到其他情况。
我会调整右边距:
\NewDocumentCommand{\myhead}{ m }
{%
{\rightskip=0pt plus 1fil minus 1in % ❶
\LARGE
\noindent
\textcolor{red}{\textbf{\textsl{#1}}}%
\par
}%
\vspace{5pt}%
}
在❶处我们设置\rightskip
为允许它缩小1in
(这是一个任意选择的数量,你会想要选择一个满足你需求的东西,无论你只是想要一点悬垂,还是你想要能够填充整个边缘空间或完全不同的东西)。
还要注意,最重要的是,我已将所有内容都包装在一个新命令中,以便您的文档中不会填充任意格式命令,以便在全球范围内轻松修改。
答案3
通过增加边距区域的宽度( )来利用较大的右边距\marginparwidth
。然后将较长的副标题插入到\parbox
延伸到此区域的 中。
使用\mbox
可能看起来更简单,但它不会用更长的文本换行,而且会溢出页面。
\documentclass[12pt]{article}
\usepackage{amsthm,latexsym,amssymb,amsmath,verbatim}
\oddsidemargin -8pt \evensidemargin -15pt \topmargin -25pt
\headheight -5pt \headsep 0pt \textheight 9.5in \textwidth 5.25in
\parskip 10pt
\setlength{\marginparwidth}{120pt} % added <<<<<<<<<<<<<<<<<
\usepackage{showframe} % only to show the margins
\usepackage{scalefnt}
\usepackage{xcolor}
\usepackage{lipsum}
\begin{document}
\thispagestyle{empty}
\begin{LARGE}
\noindent{\textcolor{red}{\textbf{\textsl{Title, Whose Length is Fine}}}}
\vspace{5pt}
% use the margin for this long subtitle <<<<<<<<<<<<<<<<
\noindent\parbox{\dimexpr\textwidth+\marginparwidth+\marginparsep\relax}{\textcolor{red}{\bfseries\textsl{Subtitle Whose Length is a Little Too Long and Longer }}}
\noindent\mbox{\textcolor{red}{\bfseries\textsl{Subtitle Whose Length is a Little Too Long and Longer}}}
\end{LARGE}
\large
\vspace*{15pt}
\lipsum[13]
\end{document}
答案4
adjustwidth
包中的环境就是changepage
为此设计的。
% longtitleprob.tex SE 620119
\documentclass[12pt]{article}
\usepackage{changepage} %% PW added
\usepackage{amsthm,latexsym,amssymb,amsmath,verbatim}
\oddsidemargin -8pt \evensidemargin -15pt \topmargin -25pt
\headheight -5pt \headsep 0pt \textheight 9.5in \textwidth 5.25in
\parskip 10pt
\usepackage{scalefnt}
\usepackage{xcolor}
\usepackage{lipsum}
\begin{document}
\thispagestyle{empty}
\begin{LARGE}
\noindent{\textcolor{red}{\textbf{\textsl{Title, Whose Length is Fine}}}}
\vspace{5pt}
\begin{adjustwidth}{}{-2cm} %% PW added
\noindent{\textcolor{red}{\textbf{\textsl{Subtitle Whose Length is a Little Too Long}}}}
\end{adjustwidth}
\end{LARGE}
\large
\vspace*{15pt}
\lipsum[13]
\end{document}
环境adjustwidth
采用两个长度参数。\begin{adjustwidth}{<left>}{<right>}
正<left>
长度将增加左边距,从而减少文本宽度,而负长度将减少左边距,从而增加文本宽度。参数<right>
和边距也是如此。空参数表示不进行调整。有一个带星号的版本adjustwidth*
,它会导致边距的值在偶数页和奇数页之间切换。