上下文

上下文

上下文

我想通过计算生成包含不同样式文本的 1920x1080 PNG 图像。由于LaTeX具有丰富的文本样式设置功能,并且可以使用命令行编译文档(因此,创建脚本很方便),所以我决定使用LaTeX

我想创建三个垂直排列且高度相同的区域,并在这些区域的中心显示一个句子。下图是使用 Inkscape 创建的,它显示了我想要的结果。

在此处输入图片描述

我尝试过的方法

以下最小工作示例展示了我为实现预期结果所做的一次尝试。

\documentclass[aspectratio=169]{beamer}

\setbeamersize{text margin left=0mm,text margin right=0mm}
\setbeamertemplate{navigation symbols}{}
\setbeamercolor{background canvas}{bg=yellow}

\begin{document}
\begin{frame}
  \begin{center}
    This is a sentence in the first area.
  \end{center}
  \par\noindent\rule{\textwidth}{1pt}
  \begin{center}
    This is a sentence in the second area.
  \end{center}
  \par\noindent\rule{\textwidth}{1pt}
  \begin{center}
    This is a sentence in the third area.
  \end{center}
\end{frame}

\end{document}

在此处输入图片描述

该文档的问题是三个区域大小不一样,并且句子不居中。

我知道的

我知道可以使用 PDF 文件创建 1920x1080 PNG 图像convert

$ convert -quality 100 -density 300 -resize 1920x1080 document.pdf document.png

我们可以用它ffprobe来确认所需的尺寸。

$ ffprobe -v error -show_entries stream=width,height -print_format default=nw=1 document.png
width=1920
height=1080

答案1

您可以使用固定高度的迷你页面:

\documentclass[varwidth=16cm]{standalone}

\setlength{\fboxsep}{0pt}
\newlength{\myheight}
\setlength{\myheight}{\dimexpr3cm-2\fboxrule}

\usepackage{xcolor}
\pagecolor{yellow}

\begin{document}

  \nointerlineskip
  \hskip-\fboxrule\fbox{\begin{minipage}[c][\myheight]{16cm}
    \centering
    This is a sentence in the first area.
  \end{minipage}}%
  
  \nointerlineskip
  \hskip-\fboxrule\fbox{\begin{minipage}[c][\myheight]{16cm}
    \centering
    This is a sentence in the first area.
  \end{minipage}}%
  
  \nointerlineskip
  \hskip-\fboxrule\fbox{\begin{minipage}[c][\myheight]{16cm}
    \centering
    This is a sentence in the first area.
  \end{minipage}}%

\end{document}

在此处输入图片描述

答案2

你可以使用 TikZ:

\documentclass[aspectratio=169]{beamer}

\setbeamertemplate{navigation symbols}{}
\setbeamercolor{background canvas}{bg=yellow}

\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{frame}
\begin{tikzpicture}[remember picture,overlay]
\draw ($(current page.north west)!0.33!(current page.south west)$) -- ($(current page.north east)!0.33!(current page.south east)$);
\draw ($(current page.north west)!0.66!(current page.south west)$) -- ($(current page.north east)!0.66!(current page.south east)$);
\node[text width=\linewidth,align=center] at ($(current page.north)!0.1667!(current page.south)$) {sentence 1};
\node[text width=\linewidth,align=center] at ($(current page.north)!0.5!(current page.south)$) {sentence 2};
\node[text width=\linewidth,align=center] at ($(current page.north)!0.8333!(current page.south)$) {sentence 3};
\end{tikzpicture}
\end{frame}

\end{document}

在此处输入图片描述

相关内容