更改页面部分文本的宽度

更改页面部分文本的宽度

是否可以在页面中间更改文本宽度?如果我使用\newgeometry和 ,\restoregeometry这会强制分页。该包changepage和命令\adjustwidth适用于 MWE,但在我的真实 .tex 文件中出现错误,与 发生冲突microtype

\documentclass{article}
\usepackage[textwidth=5cm,textheight=15cm]{geometry}
\usepackage{lipsum}
\begin{document}

This is a sentence that should have a 5 cm textwidth. And now we pass to 10 cm
\newgeometry{textwidth=10cm,}
\lipsum[1]
\restoregeometry
\lipsum[1]

\end{document}

答案1

阐明并稍微扩展和澄清您的评论。

adjustwidth包中的宏也changepage可以在两个附加文件中使用:

\documentclass[twoside]{article} % <---
\usepackage[textwidth=5cm,textheight=15cm]{geometry}
%--------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%
\usepackage{lipsum}                             % for dummy text
%---------------------------------------------------------------%
\usepackage[latin]{babel}
\usepackage[strict]{changepage}

\begin{document}

This is a odd side page. Here the text has width of 5 cm.
\newpage
This is a even side page. Normally here the text width is 5 cm,

\begin{adjustwidth*}{}{-5cm} % <---
\itshape
But we can change width by use of \verb+adjustwidth*+ macro, which locally push paragraph's outside margin so, that the \verb+\textwidth+ become 10 cm wide.

\lipsum[66]
\end{adjustwidth*}

And here the text width is again 5 cm. As before the use of the \verb+adjustwidth*+ macro.

\end{document}

在此处输入图片描述

在这种情况下,当您的文档只有一面时,您不需要使用选项加载changepagestrict现在adjustwidth可以用作

\begin{adjustwidth}{0cm}{-5cm} % <---
\itshape
But we can change width by use of \verb+adjustwidth+ macro, which locally push paragraph's right margin so, that the \verb+\textwidth+ become 10 cm wide.

\lipsum[66]
\end{adjustwidth}

并且任何页面上的文本都会超出右侧页面的文本边框:

在此处输入图片描述

答案2

如果您想改变单个段落的行宽,那么请使用\parshape原始或\hangindent\hangafter原始寄存器。

段落本身的宽度由寄存器给出\hsize\leftskip寄存器\rightskip给出段落中每行前后的空间。

所提到的原始寄存器是 TeX 内部段落构建器在构建段落时使用的,即在命令中\par(通常由 TeX 令牌处理器插入到空行中)。

答案3

即使 OP 在评论中将问题标记为已解决,这里也有两个可行的解决方案,以防其他人遇到类似的问题。

无需额外的包(geometry仅用于简单显示边距和设置textwidth),您可以设置leftskiprightskip(此处为newenvironment)如上所述擦拭

\documentclass{article}
\usepackage{blindtext}
\usepackage[textwidth=10cm, showframe]{geometry}
\newenvironment{smallmargin}{%
\par\setlength\leftskip{2.5cm}%
\setlength\rightskip\leftskip}{%
\par}
\begin{document}
\blindtext

\begin{smallmargin}
\blindtext
\end{smallmargin}

\blindtext
\end{document}

或者使用adjuswidth包提供的环境changepage(提供附加选项),如建议的那样大卫·卡莱尔

\documentclass{article}
\usepackage[textwidth=10cm,showframe]{geometry}
\usepackage{changepage}
\usepackage{blindtext}
\begin{document}

\begin{adjustwidth}{2.5cm}{2.5cm}
\blindtext
\end{adjustwidth}

\blindtext
\end{document}

相关内容