如何在 vbox 内换行文字?

如何在 vbox 内换行文字?

我正在使用 Ruby 的 erb 模板来生成一个 LaTeX 文件,该文件基本上只是带有标题的图像(尽管我没有使用该\caption环境,因为它似乎会破坏一些东西)。代码如下所示:

\documentclass[12pt, a4paper, twoside]{article}

\usepackage[margin=2.5cm, bindingoffset=1cm, headheight=15pt]{geometry}

\usepackage{fontspec}
\newfontfamily{\normaltitle}{Exo 2}
\newfontfamily{\boldtitle}[UprightFont={* Bold}]{Exo 2}
\newfontfamily{\footerheaderfont}{Exo 2}

\usepackage[dvipsnames]{xcolor}
\definecolor{CustomGray}{HTML}{909090}

\usepackage{mdframed}

\usepackage{graphicx}
\graphicspath{ {D:/[input]/letter F img} }

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[LE,RO]{\footerheaderfont\small{Author}}
\fancyhead[LO,RE]{\footerheaderfont\small{Title}


\fancyfoot[C]{}
\fancyfoot[LE]{\footerheaderfont\small\thepage}
\fancyfoot[RO]{\footerheaderfont\small\thepage}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}


\usepackage{titlesec}
\titlelabel{\thetitle.\quad}
\titleformat*{\section}{\fontsize{24}{36}\boldtitle}
\titlespacing*{\section}{0pt}{0pt}{12pt}

\setlength{\parindent}{0pt}
\setmainfont[Ligatures=TeX]{Times New Roman}

\newcommand\dictentry[3]{
    \large
    \hangindent=0cm
    \textcolor{CustomGray}{#1}\textbf{#2}: \enspace \textit{#3}
}

\tolerance=8000



\begin{document}
    \begin{titlepage}
        \begin{center}
            \vspace*{3cm}
            
            \fontsize{36}{40}\selectfont
            
            \boldtitle{Aneks F:}
            
            \vspace{0.5cm}
            
            \normaltitle{Fotokorpus haseł \emph{SW}}
            
            \vfill
        \end{center}
    \end{titlepage}

    \setcounter{page}{202}


            \vbox{%
            
            \dictentry{}
            {Formować}
            {tom I (A-G), litera F, str. 763, kol. lewa, akapit 26 – str. 763, kol. prawa, akapit 01}

            
            \begin{mdframed}[linewidth=2pt, linecolor=CustomGray, nobreak=true]
            \includegraphics[width=\linewidth]{"page-0763, col-1, par-26 fin.png"}
            \end{mdframed}
            
            \begin{mdframed}[linewidth=2pt, linecolor=CustomGray, nobreak=true]
            \includegraphics[width=\linewidth]{"page-0763, col-2, par-01 fin.png"}
            \end{mdframed}
            
            \vspace{1em}
        }
    

\end{document}

它会产生以下与文本换行有关的问题: 在此处输入图片描述

我想要实现的是(✓ - 实现,✗ - 未实现):

  1. ✓ 防止图片超出文本区域(必要时分页);
  2. ✓ 将图像粘贴到标题上(一个标题有时有多张图片);
  3. ✗ 必要时可打破“标题”。

我该如何改变我的代码来实现这一点?

======

编辑:

在使用\parbox内部\vbox并纠正@Don Housek 概述的语法问题之后:

\vbox{%
    
    \parbox{4cm}{
        \dictentry{}
        {Formować}
        {tom I (A-G), litera F, str. 763, kol. lewa, akapit 26 – str. 763, kol. prawa, akapit 01}
    }
    
    \begin{mdframed}[linewidth=2pt, linecolor=CustomGray, nobreak=true]
    \includegraphics[width=\linewidth]{"page-0763, col-1, par-26 fin.png"}
    \end{mdframed}
    
    \begin{mdframed}[linewidth=2pt, linecolor=CustomGray, nobreak=true]
    \includegraphics[width=\linewidth]{"page-0763, col-2, par-01 fin.png"}
    \end{mdframed}
    
    \vspace{1em}
}

它确实开始换行(满足上面的第 3 点),但现在它会产生一个额外的换行符,从而破坏了关于将“标题”粘贴到图像上的第 2 点: 在此处输入图片描述

答案1

您忽略了输出中的错误。\colon是一个数学模式命令,用于获取没有关系间距的冒号(例如,用于输入$f\colon X\to Y$)。 将您的替换\colon:,您将得到预期的错误。

故事的道德启示:不要忽视 LaTeX 的错误

答案2

在 @Don Housek 的建议下,我发现了语法错误,然后我能够生成具有换行的预期宽度文本,这会导致“标题”和图像之间出现断行。然后我通过添加换行抑制来修复它\unskip

\vbox{%

\parbox{15cm}{
    \dictentry{}
    {Formować}
    {tom I (A-G), litera F, str. 763, kol. lewa, akapit 26 – str. 763, kol. prawa, akapit 01}
}

\begin{mdframed}[linewidth=2pt, linecolor=CustomGray, nobreak=true]
\includegraphics[width=\linewidth]{"page-0763, col-1, par-26 fin.png"}
\end{mdframed}

\begin{mdframed}[linewidth=2pt, linecolor=CustomGray, nobreak=true]
\includegraphics[width=\linewidth]{"page-0763, col-2, par-01 fin.png"}
\end{mdframed}

\vspace{1em}
}

相关内容