LaTex - как создать коробки с фиксированной высотой и шириной, с вложенным текстом, который выровнен по вертикали и горизонтали? - PullRequest
23 голосов
/ 09 января 2010

Это для создания карточек в LaTeX. Мой принтер не поддерживает двустороннюю печать - какие пакеты, такие как флэш-карты и флак-карты, по-видимому, требуют - поэтому я пытаюсь создать на каждой странице следующую структуру:

[Col1: лицевая сторона карты] [Col2: обратная сторона карты]

Каждая строка будет соответствовать одной карточке. План состоит в том, чтобы разрезать каждый ряд вверх, сложить их по центру и сшить их, чтобы создать «карточку».

Вопрос: как лучше всего создать один блок с заданными высотой и шириной, а текст в нем выровнен по вертикали?

Я относительно новичок в латексе, так что это ограничивает мои возможности. Мне не нужны полные, подробные ответы обязательно - любые указатели в правильном направлении очень помогли бы! Любые предложения об альтернативных методах достижения того, за что я стреляю, также будут полезны.

Большое спасибо!

Ответы [ 3 ]

26 голосов
/ 10 января 2010

Предположим, вы хотите создать коробку высотой 40pt и шириной 3 см:

\vbox to 40pt {\vfil
\hbox to 3cm{Some info}%
\vfil
}
2 голосов
/ 09 января 2010

Вы можете использовать любые пакеты для создания своих карточек, а затем сохранить вывод в формате PDF (например, используйте pdflatex). Затем создайте другой документ в Latex, который использует пакет pdfpages и использует его параметр nup для печати двух страниц на странице. Pdfpages имеет много опций для тонкой настройки макета страницы. Это дает вам всю мощь других пакетов для вашего использования.

1 голос
/ 19 апреля 2019

My Решение на основе TikZ с двумя scope s и вложенными fbox и parbox: текст расположен горизонтально (из-за \centering) и вертикально центрирован в две коробки / столбцы, ширины и высоты могут быть настроены.

\documentclass[tikz,multi=false,border=5mm]{standalone}
\usepackage{lipsum}

\begin{document}
\begin{tikzpicture}
\begin{scope}
  \node (0,0) {\fbox{\parbox[c][100mm][c]{65mm}{\centering%
    \lipsum[1]
  }}};
\end{scope}

\begin{scope}[xshift=75mm]
  \node (0,0) {\fbox{\parbox[c][120mm][c]{65mm}{\centering%
    Some text\\%
    \ \\%
    \lipsum[2]
  }}};
\end{scope}
\end{tikzpicture}
\end{document}

screenshot of output

...