[закрыто,latex]внутри блока parcolumns не работает \vspace

fass965

Хочу сделать текст в две колонки, при этом в левой колонке чтобы он был в середине страницы (по вертикали).
Для создания двух колонок использую пакет parcolumns, а внутри него использую \vspace*{\fill} до и после текста. Получается вот так:

\documentclass[a4paper,12pt]{report}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage{lscape}
\usepackage{parcolumns}
\pagestyle{empty}
\begin{document}
\begin{landscape}
\begin{parcolumns}{2}
\colchunk[1]
\vspace*{\fill}
\begin{center}
Текст в левой колонке \\
с выравниванием по центру \\
должен быть по центру левой колонки
\end{center}
\vspace*{\fill}
}
\colchunk[2]{
Обычный текст в правой колонке с выравниванием по левому краю.
}
\end{parcolumns}
\end{landscape}
\vspace*{\fill}
\begin{center}
А не внутри parcolumns - работает
\end{center}
\vspace*{\fill}
\end{document}

Но тем не менее, текст в левой колонке остаётся вверху, а не в середине страницы.
Вот результат компиляции.
landscape я влключил специально, но и без него поведение такое же, так что дело не в нём.

olga-sklyarova

Окружение parcolumns предназначено для чуть других целей (для поабзацных переводов) и выравнивает i-й абзац справа с i-м абзацем слева. При этом выравнивании сложно учитываются имеющиеся \vfill.
Поставленную задачу можно решить (стандартно) так:
\documentclass[a4paper,12pt]{report}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage{multicol}
\pagestyle{empty}
\begin{document}

\begin{multicols*}{2}

\rule{0pt}{0pt}

\vfil

Я в центре!

\vfil\rule{0pt}{0pt}

\columnbreak

Я сверху!

\end{multicols*}

Я на следующей странице!

\end{document}

fass965

Спасибо, это именно то, что нужно! :)

fass965

Всё же это не всовсем то, что мне нужно. :(
Сделать то, что я написал в первом посте, действительно таким образом получилось.
Но я, на самом деле, ещё в parcolumns использовал возможность делать колонки разной ширины, дописывая дополнительный параметр, вот так:
\begin{parcolumns}[colwidths={2=5cm}]{2}
Для простоты примера, я это опутил, просто.
В документации на multicols, я прочитал про параметры \linewidth и \columnsep, из которых размер колонки определяется, но они задаются для всех колонок, а не для каждой. Таким образом, исправляя одну проблему, я получил другую. :)

fass965

Ещё раз хорошенько погуглил - в нескольких местах говорят, что с multicols никак вообще нельзя сделать неравные по ширине колонки. :(
Так что оно мне совсем не подходит.

kravecnata

Я бы в левой колонке parcolumns поместил minipage, а внутри него уже разместил текст, как нравится.

olga-sklyarova

Да, multicols для такой задачи не подходит.
Можно руками написать что-то типа
 
\documentclass[a4paper,12pt]{report}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage{calc}
\pagestyle{empty}
\begin{document}

\newlength{\mylen}
\settoheight{\mylen}{Рассмотрим, кто тут как расположен\ldots}
\setlength{\mylen}{\textheight-\mylen-2\parindent-3pt}
\centerline{Рассмотрим, кто тут как расположен\ldots}\par\hrulefill\par
\noindent\begin{minipage}[c][\mylen]{.7\textwidth}
\strut\vfill

Я в центре!

\hrulefill

\vfill
\strut
\end{minipage}%
\begin{minipage}[c][\mylen]{.3\textwidth}
\strut

\hrulefill

Я наверху!

\vfill
\strut
\end{minipage}

\end{document}

fass965

Ещё раз огромное спасибо! Окончательно достиг желаемого :)
Оставить комментарий
Имя или ник:
Комментарий: