2010-07-12 3 views
3

В кадрах луча Я хочу, чтобы содержимое равномерно распределялось по раме.Латекс: текст должен автоматически заполнять рамку в слайдах Beamer

Использование опции \ documentclass [slidestop] {beamer} Я могу легко указать содержимое, которое должно быть выровнено по центру/центру, но когда у меня на слайде всего несколько пуль на слайде, они собираются вместе сверху, я хочу, чтобы лучер решил расстояние между ними автоматически, чтобы равномерно распределить их.

Возможно ли это без установки vspace путем проб и ошибок?

+0

Не могли бы вы разместить минимальный пример? –

ответ

6

Я думаю, что использование \ vfill уменьшит часть проб и ошибок. Один \ vfill между каждой пулей должен гарантировать равномерный интервал. Попробуйте \ vfill перед и/или после пуль, чтобы получить отделение от предыдущего текста или снизу страницы. Я не использую и не знаю Beamer, но я подозреваю, что есть способ поместить команды \ vfill в шаблон Beamer.

\documentclass{article} 
\begin{document} 
\begin{itemize} 
\vfill\item This is text of first item 
\vfill\item This is text of second item 
\vfill\item This is text of third item 
\end{itemize} 
\end{document} 

За свой комментарий, вот один из способов можно определить vfill, которые будут автоматически использоваться в основных элементах списка, но не имеют vfill в подразделах. Этот способ позволяет использовать ту же команду \ item, независимо от того, находитесь ли вы в основном списке или во вложенном списке, но вам нужно определить или переопределить среды и знать, когда вы добавляете основной (то есть, vfilled) список и когда вы добавляете не-vfilled (т.е. вложенный) список:

\documentclass{article} 

\newenvironment{novfillenum}{\begin{enumerate}\let\item\olditem}% 
{\end{enumerate}} 
\newenvironment{vfilleditems}{\begin{itemize} \let\olditem\item \renewcommand\item{\vfill\olditem}}% 
{\end{itemize}} 

\begin{document} 
\begin{vfilleditems} 
\item Item One 
    \begin{novfillenum} 
     \item subitem1 
     \item s2 
     \item s3 
    \end{novfillenum} 
\item Item Two 
    \begin{novfillenum} 
     \item subitem1 
     \item s2 
     \item s3 
    \end{novfillenum} 
\item item three 
    \begin{novfillenum} 
     \item subitem1 
     \item s2 
     \item s3 
    \end{novfillenum} 
\end{vfilleditems} 

\end{document} 
+0

Нет, это не помогает цели. Я хочу, чтобы интервал автоматически определялся. Я хочу избежать использования vfill. Я хочу, чтобы LaTeX/Beamer обнаружил высоту кадра и равномерно распределял пули. – thequark

+0

@thequark: Ну, я бы сказал, что это помогает некоторым, так как предлагаемое исправление намного лучше, чем использование \ vspace. Фактически, использование \ vfill делает det4ect высотой кадра и автоматически корректирует пространство равномерно для соответствия. Вместо использования \ item просто используйте \ vfill \ item для каждого из ваших элементов. Это должно обеспечить вам 90% - 99% того, куда вы хотите отправиться. Вы можете определить макрос, чтобы сделать еще проще, но \ vfill \ item кажется мне довольно простым. –

+0

Спасибо, Герберт, я попробовал, и это работает для меня. Теперь у меня много элементов в моих презентациях, поэтому вместо того, чтобы вручную вставлять \ vfill всюду, мы можем переопределить команду itemize? Я попробовал следующее: \ пусть \ olditem \ пункт \ renewcommand \ пункт {\ olditem \ vfill} он работает нормально, но я требовать что-то еще для него. Я требую, чтобы пули верхнего уровня имели vfill не «подпункты». Возможно ли это с помощью программы обновления? – thequark

1

Добавление другого образца здесь, потому что первый ответ становится слишком тесно. Протестировано, изменяя команды ярлыков, и, что вы знаете, похоже, это работает. Это дает ошибки, хотя, я уверен, связаны с наличием \ vfill как части конструкции метки. Я удивлен, что, похоже, он создает желаемый результат, но для его работы потребуется некоторая настройка, чтобы заставить его работать без ошибок:

\begin{document} 

\let\oldlabelitemi\labelitemi 
\renewcommand{\labelitemi}{\vfill\oldlabelitemi{\hspace{1ex}}} 

\begin{itemize} 

\item Item One 
    \begin{itemize} 
    \item subone 
    \item subtwo 
    \item subthree 
    \end{itemize} 
\item Item Two 
    \begin{itemize} 
     \item subitem1 
     \item s2 
     \item s3 
    \end{itemize} 
\item item three 
    \begin{itemize} 
     \item subitem1 
     \item s2 
     \item s3 
    \end{itemize} 
\end{itemize} 

\end{document} 
+1

@Herbert Sitz: Я очень впечатлен вашими ответами и всеми вашими усилиями, чтобы найти решение и помочь thequack. Я принимаю к сведению все, что вы говорите :) – Vivi

+0

@Herbert: Я раньше пробовал такой подход, и, когда я пытаюсь выполнить ваш пример, я получаю следующую ошибку (то же, что и раньше): 9 ошибка | Отсутствует} вставлено. } \ item I tem One – thequark

+0

@quark: Да, я не думаю, что это хорошее решение. Я уверен, что это связано с тем, что put \ vfill в ярлыке вызывает проблему; метка должна быть просто символом (-ами), а не информацией о форматировании страницы. –

 Смежные вопросы

  • Нет связанных вопросов^_^