Новые команды с выравниванием текста

Новые команды с выравниванием текста

Я хотел бы создать новую команду в LaTeX, которая выравнивает текст по правому и левому краю (см. пример ниже). Только я хотел бы, чтобы текстовый столбец был размером с половину страницы.

\documentclass[a4paper,10pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage[a4paper, nohead, nofoot, top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry}
\newcommand\sx{\fontfamily{lmss}\Large\flushright}
\newcommand\dx{\fontfamily{lmss}\Large\flushleft}
\begin{document}
\sx Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
\bigskip
\dx Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
\end{document}

Желаемый результат:

введите описание изображения здесь

решение1

Теперь, когда я лучше понимаю вашу проблему, благодаря вашей ссылке, я могу предложить то, что, по-видимому, отвечает всем требованиям.

Я определяю \characterкоманду, которая набирает имена персонажей заглавными буквамииопределяет значение hangindentдля последующего текста, который может иметь несколько абзацев.

Я также определяю \speciкоманду. Есть только два ограничения: новые абзацы, если таковые имеются, должны вводиться простой командой TeX \endgraf, а новые строки — командой \newline, а не обычным способом. \postspeciskipДлина (по умолчанию 1.5\baselineskip) может использоваться для установки расстояния от спецификаций до текста диалогов.

Акты и сцены считаются \chapters и \sections. Они удобно форматируются с помощью пакета titlesec. Часть кодирования была бы проще, если бы требованием к спецификациям были малые заглавные буквы вместо заглавных.

Если вы хотите, чтобы абзацы не обрезались при разрыве страниц, вы можете добавить в преамбулу следующую строку:

\interlinepenalty=10000 \parskip0pt plus \baselineskip

Можно включать файлы и определять сочетания клавиш для различных персонажей во включенных файлах.

Вот пример (начало «La Locandiera» Гольдони).

Основной файл:

\documentclass[a4paper,11pt]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[italian]{babel}
\usepackage[noheadfoot, margin=2cm, showframe, nomarginpar]{geometry}
\usepackage{textcase}
\usepackage[explicit]{titlesec}

\newlength{\postspeciskip}
\postspeciskip = 1.5\baselineskip

\newcommand\character[1]{\par\everypar{\hangindent=0.3\linewidth\hangafter=1}\parskip=0.667\baselineskip plus
2pt\large\makebox[0.3\linewidth][r]{\MakeTextUppercase{#1}:\hskip0.1\linewidth }}

\newcommand\speci[1]{\everypar{\hangindent=0.42\linewidth\hangafter=0}\parskip=0.667\baselineskip plus
2pt\large\raggedright\textit{#1}\vskip\postspeciskip}%

\titleformat{\chapter}[block]{\centering\bfseries\LARGE}{\MakeTextUppercase\chaptername~\thechapter}{1em}{#1}
\titlespacing*{\chapter}{0pt}{2\baselineskip}{3\baselineskip}
\renewcommand\thechapter{\Roman{chapter}}
\newcommand\act[1][]{\chapter{#1}}

\setlength\fboxsep{0pt}
\titleformat{\section}[hang]{\Large}{\makebox[0.29\linewidth][l]{\MakeTextUppercase{\chaptername~\thechapter}} \makebox[0.1\linewidth][l]{\MakeUppercase{\sectionname~\thesection}\qquad}} {1em}{#1}
\titlespacing*{\section}{0pt}{1\baselineskip}{1\baselineskip}
\renewcommand\thesection{\arabic{section}}
\newcommand\scene[1][]{\section{#1}}

\AtBeginDocument{\def\chaptername{atto}\def\sectionname{scena}}
\setlength\parindent {0pt}%
\interlinepenalty = 1000\parskip0pt plus \baselineskip
\begin{document}

\sffamily
\include{1stact}

\end{document} 

Включенный файл:(1stact.tex)%%%%%%%%%%%%%%%%%%%%%%%%%%

\def\Marchese{\character{Marchese}}
\def\Conte{\character{Conte}}
\def\Fabrizio{\character{Fabrizio}}
%%%%%%%%%%%%%%%%%%%%%%%%%    \act

\scene
\speci{Sala di locanda.
\endgraf
Il Marchese di Forlipopoli ed il Conte d’Albafiorita}

\Marchese Fra voi e me vi è qualche differenza.
\Conte Sulla locanda tanto vale il vostro denaro, quanto vale il mio.
\Marchese Ma se la locandiera usa a me delle distinzioni, mi si convengono più che a voi.
\Conte Per qual ragione?
\Marchese Io sono il Marchese di Forlipopoli.
\Conte Ed io sono il Conte d’Albafiorita.
\Marchese Sì, Conte! Contea comprata.
    \Conte Io ho comprata la contea, quando voi avete venduto il marchesato.
 \Marchese Oh basta: son chi sono, e mi si deve portar rispetto.
 \Conte Chi ve lo perde il rispetto? Voi siete quello, che con troppa libertà parlando...
 \Marchese Io sono in questa locanda, perché amo la locandiera. Tutti lo sanno, e tutti devono rispettare una giovane che piace a me.
 \Conte Oh, questa è bella! Voi mi vorreste impedire ch’io amassi Mirandolina? Perché credete ch’io sia in Firenze? Perché credete ch’io sia in questa locanda?
 \Marchese Oh bene. Voi non farete niente.
 \Conte Io no, e voi sì?
 \Marchese Io sì, e voi no. Io son chi sono. Mirandolina ha bisogno della mia protezione.
 \Conte Mirandolina ha bisogno di denari, e non di protezione.
 \Marchese Denari? ... non ne mancano.
 \Conte Può essere che lo voglia sposare. Non sarebbe cosa mal fatta. Sono sei mesi che è morto il di lei padre. Sola una giovane alla testa di una locanda si troverà imbrogliata. Per me, se si marita, le ho promesso trecento scudi.

\dotfill

\scene

\speci{Fabrizio e detti.}

\Fabrizio Mi comandi, signore. (Al Marchese.)
\Marchese Signore? Chi ti ha insegnato la creanza?
\Fabrizio La perdoni.
\Conte Ditemi: come sta la padroncina? (A Fabrizio.)
\Fabrizio Sta bene, illustrissimo.

\dotfill 

введите описание изображения здесь

введите описание изображения здесь

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