如何一次性调整文本宽度

如何一次性调整文本宽度

我希望能够对文本宽度进行一次性调整,以便标题(或副标题)完全出现在一行上。

考虑 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可能看起来更简单,但它不会用更长的文本换行,而且会溢出页面。

C

\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*,它会导致边距的值在偶数页和奇数页之间切换。

相关内容