当输入字符串中有换行符时,如何处理表中的输入字符串?

当输入字符串中有换行符时,如何处理表中的输入字符串?

我编写了一个文档模板,到目前为止效果很好。它包括定义文档名称、文档控制编号等内容的输入。

不幸的是,我遇到一个带有多行标题的文档的情况,该文档无法正确处理,而且除了做出特殊例外之外,我无法弄清楚如何检测和/或处理它(如果可以的话,我宁愿不这样做[另外,这是一个扩展我对乳胶的理解的机会;)])。

下面的示例代码运行良好,但是如果您从第 5 行中间删除 %comment% 分隔符,则会出错。有人知道如何让 latex 检测这种情况并将 docName 的两个部分放在表格的不同行上吗?

提前致谢,肖恩

\documentclass{article}
\usepackage{tabularx}

\begin{document}
\newcommand{\docName}{Video Endoscope \& Imaging Module}% \\DVT Support Manual}

\newlength{\headerwidth}
\setlength{\headerwidth}{\textwidth}

%This table holds the document name.
\hspace{-6mm}
\begin{tabularx}{\headerwidth}{|c|X|c|} \hline
& \\
\footnotesize \sffamily{\textbf{Dokument-/Dateiname:}} & \\
\footnotesize \sffamily{\textbf{Document-/File-Name:}} & \raisebox{1\totalheight\relax}[0pt][0pt]{\docName} \\
\hline
\end{tabularx}
\end{document}

答案1

使用\Longunderstack\Longstack

已编辑以处理包含数据的宏要在堆栈中设置的情况(根据 OP 的评论)。在这种情况下,行

\setDocName{Video Endoscope \& Imaging Module \\DVT Support Manual}

将数据放在变量中\@setDocName。稍后,将的内容\@setDocName设置在中\Longunderstack

\documentclass{article}
\usepackage{tabularx,stackengine}
\setstackEOL{\\}
\makeatletter
\def\setDocName#1{\def\@setDocName{#1}} 
\newcommand{\DocName}{%
  \def\tmp{\Longunderstack[l]}%
  \expandafter\tmp\expandafter{\@setDocName}%
} 
\makeatother
\begin{document}
\setDocName{Video Endoscope \& Imaging Module \\DVT Support Manual}

\newlength{\headerwidth}
\setlength{\headerwidth}{\textwidth}
%This table holds the document name.
\hspace{-6mm}
\begin{tabularx}{\headerwidth}{|c|X|c|} \hline
%& \\
\footnotesize \sffamily{\textbf{Dokument-/Dateiname:}} & \\
\footnotesize \sffamily{\textbf{Document-/File-Name:}} & \DocName \\
\hline
\end{tabularx}
\end{document}

在此处输入图片描述

答案2

tabular在 内使用tabularx

\documentclass{article}
\usepackage{tabularx}
\begin{document}
    \newcommand\docName{\tabular[t]{@{}l@{}}Video Endoscope \& Imaging Module \\
          DVT Support Manual\endtabular}
\noindent
\begin{tabularx}{\textwidth}{|c|X|} \hline
  &\\
  \footnotesize\sffamily\bfseries 
  \tabular[t]{@{}l@{}}Dokument-/Dateiname:\\Document-/File-Name:\endtabular & \docName \\
  &\\\hline
\end{tabularx}
\end{document}

在此处输入图片描述

答案3

您可以使用\raggedright,这样突然允许\\\docName但需要用终止行\tabularnewline;没什么大不了的,因为可以在序言中定义此表。

\documentclass{article}
\usepackage{tabularx}

\newcommand{\docName}{Video Endoscope \& Imaging Module \\ DVT Support Manual}
\newcommand{\HeaderBox}{%
  \par\noindent
  \begingroup
  \renewcommand{\tabularxcolumn}[1]{m{##1}}%
  \begin{tabularx}{\headerwidth}{|c|>{\raggedright}X|}
  \hline
  &\tabularnewline
  \begin{tabular}{@{}>{\footnotesize\sffamily\bfseries}l@{}}
  Dokument-/Dateiname: \\
  Document-/File-Name:
  \end{tabular} &
  \docName \tabularnewline
  &\tabularnewline
  \hline
  \end{tabularx}%
  \endgroup
  \par
}
\newlength{\headerwidth}
\AtBeginDocument{\setlength{\headerwidth}{\textwidth}}

\begin{document}
%This table holds the document name.
\HeaderBox

\end{document}

在此处输入图片描述

相关内容