Как можно задать боковые поля для каждого абзаца, но не для других элементов?

Как можно задать боковые поля для каждого абзаца, но не для других элементов?

Мне бы хотелось получить узкие абзацы на широких страницах, чтобы заголовки разделов, рисунки, таблицы были широкими, а абзацы — узкими.

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}

\setlength{\parindent}{0pt} % so we can see better what is happening

\newenvironment{narrowpar}% I’d like every paragraph to follow these rules.
{\begin{list}{}{%
\setlength{\listparindent}{\parindent}%
\setlength{\itemindent}{\parindent}%
\setlength{\leftmargin}{2cm}%
\setlength{\rightmargin}{2cm}%
}\item }%
{\end{list}}

\begin{document}    

\section{A section title that ranges across the page}

This is a paragraph (Loret Ipsum So On). And below, an equation that can make use of the whole page width:

\begin{equation}
p v = R T
\end{equation}

Here is another paragraph.

\begin{narrowpar}
This very text looks exactly the way I would like my paragraphs to look. But unfortunately it forces me to insert code manually before and after every paragraph in the source file.
\end{narrowpar}

\end{document}

что я хочу получить

Говоря по-другому, я пытаюсь контролировать боковое пространство («отступ слева и справа» на языке HTML/CSS) для всех абзацев, не используя поля страницы. Буду признателен за любую помощь...

решение1

Вы можете попробовать переопределить форму абзаца с помощью \parshapeкоманды:

\parshape 1 .15\hsize.65\hsize

Аргумент 1: первая строка, пара аргументов: .15\hsize.65\hsizeлевое и правое поле. Все остальные строки будут иметь отступ, как у первой строки.

Это работает только для абзаца, где присутствует команда. Поэтому вы должны включить \parshapeв переопределение \par, т.е.:

\def\par{\ifhmode\ownpar\fi\endgraf}
\def\ownpar{\parshape 1 .15\hsize.65\hsize}

Связанный контент