是否可以在页面中间更改文本宽度?如果我使用\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}
在这种情况下,当您的文档只有一面时,您不需要使用选项加载changepage
。strict
现在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
),您可以设置leftskip
和rightskip
(此处为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}