定义文本区域

定义文本区域

我在这里就这个项目提出的另一个问题得到了一些很好的帮助,但我希望得到更多的指导!我正在尝试定义此文档的一个区域以适合/对齐文本。这是因为此文档将用于分发讲义并放大到海报大小。

理想情况下,我会使用两个版本,两个版本之间几乎没有变化,一个尺寸为 8.5 x 11 英寸,另一个尺寸为 24 x 36 英寸。这样,我们就可以打印出每个尺寸格式整齐的文档。

这是当前的文档(抱歉,不得不拍一张油漆图,所以它有灰色边框,而不应该有边框)。

(编辑:文档已下载,灰色边框已裁剪,现包含为图像。)

在此处输入图片描述

我需要修复的问题:

  • 格式适合“细胞和分子疾病基础研讨会系列标题”下方(这是背景图片的一部分,所以我无法删除它。并且需要适合页面底部的“山脉”(波浪线)上方。
  • 删除“主办方”和“时间/日期”之间的多余空格。这个问题来自\talkdata科学宣传的定义,所以我认为我需要将其设为可选参数?

任何有助于改进这一点的帮助都将不胜感激。总体而言,我对 Latex 还比较陌生!

(编辑:我基本上按照我需要的方式对其进行了更新,但是,它可能效率很低。}

这是我正在使用的代码(已更新):

\documentclass[11pt]{article}
\usepackage{xcolor}
\usepackage{background}
\usepackage[margin=0.5in, total={24in, 36in}]{geometry}
\usepackage{csquotes}
\usepackage{array}
\usepackage{tabularx}
\usepackage[T1]{fontenc}
\usepackage{uarial}
\usepackage{adjustbox}
\renewcommand{\familydefault}{\sfdefault}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\renewcommand{\familydefault}{\sfdefault}
\backgroundsetup{
scale=1,
angle=0,
opacity=1,  %% adjust
contents={\includegraphics[width=\paperwidth,height=\paperheight]{cmbd_watermark}}
}

%Define Colors
\definecolor{redA}{HTML}{8D3B33}
\definecolor{aqua}{HTML}{008D9B}

%My Room/misc Definitions
\newcommand{\lb}{\linebreak}
\newcommand{\vs}{\newline \vspace*{1 cm} \newline}
\newcommand{\dom}{Domenici Auditorium, Room 1220}
\newcommand{\hssb}{HSSB, Room 105}
\newcommand{\fitzthree}{Fitz Hall, Room 309}
\newcommand{\fitztwo}{Fitz Hall, Room 203}

%Define Talk Data
\newcommand{\talkdate}[1]{\fontsize{20}{20}\selectfont{\color{aqua}{\textbf{#1}}}}
\newcommand{\talkauthor}[1]{\color{redA}{\fontsize{30}{30}\selectfont{\textbf{ #1}}}}
\newcommand{\talktitle}[1]{\fontsize{20}{20}\selectfont{\textcolor{redA}{\enquote{\textit{\textbf{#1}}}}}}
\newcommand{\hostedby}[1]{\bf \textit{{\color{black} Hosted by: #1}}}
\newcommand{\timeandlocation}[2]{\fontsize{12}{12}\selectfont{ \bf \color{aqua}{ Time: #1}\lb 
           \bf \color{aqua}{ Location: #2}}}
\newcommand{\sciblurb}[1][]{\normalsize \color{black}{#1}}
\newcommand{\addtitle}[1]{\fontsize{12}{12}\selectfont{ \color{redA}{#1} }}



\newcommand{\talkdata}[8]{%
\begingroup
\renewcommand{\arraystretch}{0.6}
\begin{tabularx}{0.99\linewidth}{@{}C{0.99\linewidth}@{}}
\rule{0pt}{2ex}\talkdate{#1} \tabularnewline
\rule{0pt}{0ex}\begin{adjustbox}{max width=\textwidth,max height=\textheight,keepaspectratio}\talkauthor{#2}\end{adjustbox}\tabularnewline
\rule{0pt}{0ex}\addtitle{#3} \tabularnewline
\rule{0pt}{3ex}\begin{adjustbox}{max width=\textwidth,max height=\textheight,keepaspectratio}{{\talktitle{#4}}}\end{adjustbox} \tabularnewline
\rule{0pt}{2ex}\hostedby{#5} \tabularnewline
\rule{0pt}{2ex}\timeandlocation{#6}{#7}\tabularnewline
\end{tabularx}
\endgroup
}


\begin{document}

\pagestyle{empty}
\setlength{\parindent}{0em}
\vspace*{\fill}
\begin{center}
\begin{adjustbox}{width=\textwidth,totalheight=6.8in}
\begin{tabular}{rrr}

%/////////////////// Only Below this change below this line.//////////////////////////////////////////////////////////
\talkdata
    {January 27, 2017}
    {Farrah Kheradmand M.D.}                                                          %The Presenter for current Series
    { Professor, Baylor College of Medicine}                                                        %Title 2
    {Cigarette Smoke and DNA Cleavage Promote Lung Inflammation \& Emphysema}    %Presentation Title
    {Dr. Xuexian Yang}                                                                                                       % Host
    {12:00 PM - 1:00 PM}                                                                                                    %Time
    {\hssb}{} 
    \vs \\

\talkdata
    {January 27, 2017}
    {Farrah Kheradmand M.D.}                                                          %The Presenter for current Series
    { Professor, Baylor College of Medicine}                                                        %Title 2
    {Cigarette Smoke and DNA Cleavage Promote Lung Inflammation \& Emphysema}    %Presentation Title
    {Dr. Xuexian Yang}                                                                                                       % Host
    {12:00 PM - 1:00 PM}                                                                                                    %Time
    {\hssb}{} 
    \vs \\

\talkdata
    {January 27, 2017}
    {Farrah Kheradmand M.D.}                                                          %The Presenter for current Series
    { Professor, Baylor College of Medicine}                                                        %Title 2
    {Cigarette Smoke and DNA Cleavage Promote Lung Inflammation \& Emphysema}    %Presentation Title
    {Dr. Xuexian Yang}                                                                                                       % Host
    {12:00 PM - 1:00 PM}                                                                                                    %Time
    {\hssb}{} 
    \vs \\                                                                                              

%/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
\end{tabular} 
\end{adjustbox}    
\end{center}
\vspace*{\fill}
\begin{minipage}[t]{0.5\textwidth}
\scriptsize{The Cellular and Molecular Basis of Disease Seminar Series is sponsored by the UNM HSC
School of Medicine, the Office of Research, the Departments of Pathology, Neurosciences,
Molecular Genetics and Microbiology, Biochemistry and Molecular Biology, Cell Biology and
Physiology, Peadiatrics, and the Signature Programs.}
\end{minipage}

\end{document}

答案1

我建议您对 MWE 进行一些更改。

定义文本区域

首先:要定义可以安全排版公告的区域,您应该使用 -package geometry,就像您已经做的那样。我分别定义了四个边距,以便清楚地说明在哪里更改哪个值。我还添加了a4paper,因为您没有指定它。

如您所见,该选项showframe非常有用,其中定义了 typearea。只需插入选项(如我在示例中所做的那样)并在背景纸上打印裸文档,以便根据需要调整边距。当您定义了文本区域(或您称之为文本区域)时,您可以确保插入的公告不会干扰预印纸顶部和底部的线条。

定义设置公告的命令

正如您在评论中所写,您想使用 LaTeX 打印公告传单和海报。LaTeX 文件应由未接受过 LaTeX 培训的人输入。因此,您的目标是使其尽可能简单。

因此,我建议您将所有定义移到模板(或样式)文件中,以便隐藏它并且不会让创建内容的人感到困惑。

这也带有选项,您可以定义选项,定义传单或海报的纸张尺寸。您可以定义一个文档,只需更改选项。选项名称flyer可以poster证明是精心挑选的名称。

为了尽可能地帮助您的同事,\talkauthor原则上,您首先尝试使用特定命令(例如)是一个好主意。但您不应该像在代码中那样将存储变量内容的任务与布局任务混在一起。将这两项任务放在不同的命令中。

因此,首先定义(内部)变量,这些变量仅存储作者姓名等内容。为了保护这些变量不被作者滥用,请定义用户空间命令,以安全的方式操作变量内容。下面是一个简短的例子,说明我的意思:

\def\talk@author{}
\newcommand{\authorname}[1]{\def\talk@author{#1}}

第一行定义了一个名为 的空变量\talk@author@通常是一个受保护的字符。您不能在变量和命令名称中使用它。如果您按照建议创建样式文件,则@允许在变量和命令名称中使用 。

第二行定义了一个新命令,其名称中不包含 magic @。因此,它可以从普通 LaTeX 文件中调用。它需要一个参数,该参数被传递给变量的新内容\talk@author

您应该以这种方式定义所有需要的变量。变量的初始内容不必为空。在某些情况下,您可能会使用经常使用的默认值,例如,大多数情况下,使用 HSSB 房间。那么定义

\def\talk@room{\hssb}

此方法的另一个重要优点是,您的同事可以自由选择以何种顺序插入命令来定义变量内容。这将使您的文件“万无一失”。

记住:只存储纯内容。将它们与布局信息分开。

定义完所有需要的变量后,您就可以关心最终排版公告文档的命令了。

在你的评论中你说

我们需要添加 5 位主持人(所有主持人都需要在同一页面上)

我将其解释为“最多 5 人”。(也就是说:在某些情况下,可能是从一名演讲者到最多五名演讲者。我的这个猜测很重要,如何规划你的下一步。如果我错了,并且你的海报上总是有五名演讲者,你可以简化流程和代码。)

我建议采用以下流程:您的同事将通过插入类似 new 的命令来插入一堆变量\authorname,直到定义了第一个讲座的所有细节。然后她或他调用执行脏活的命令,例如\announce。之后,她或他输入一些更多的变量操作命令,但这次,只输入那些需要更改值的命令。(例如:如果房间和日期相同,但只有时间和标题发生变化,则更改这两个变量就足够了。)之后,\announce再次调用该命令。您的同事将继续,直到所有所需的公告都插入到您的文件中。

您的代码负责以智能方式将插入的信息传播到文本区域。

参考您的 MWE:您曾经使用过 -environment。Tabularx\tabularx是一个类似表格的环境。它的目标是将表格的总宽度扩展到您定义的某个尺寸。在您的例子中,它是文本宽度的 99%。(您为什么不使用完整的 100%?)您根据\centering它对齐表格,这会导致表格左侧和右侧的文本宽度为 0.5%。没有人会注意到这么多的空白,因为您的表格只包含一列,而且也居中。在我看来,将表格的总宽度定义为 100% 会容易得多。

唉,你花了不少功夫,才用一个定义为的列来让一列具有正确的宽度,C{0.99\textwidth}该列被扩展为p{0.99\textwidth}。 tabularx 的有利选择是使用 -column X,它会自动计算这些列的所需/需要的宽度。对你来说,编码会很容易。

现在我应该结束关于您的代码示例的讨论。我希望您不介意我指出了您的代码的缺陷,相反,我希望我能够向您展示如何编写更好的代码。

只有一列的表格也值得商榷。我们确实需要一些魔法,才能将公告的各个部分水平居中对齐在纸张上。当然,您可以使用简单的 -command \center、a\parbox甚至 a minipage。只要所有(最多)五个公告都打印在一起,那么像在 MWE 中那样裁剪可用的行长是没有意义的。

在我的第一次尝试中,我用 替换了单列表格minipage,它使用了\centering。正如我自己解释的那样(现在向您解释,温柔的读者),这是愚蠢的。我将用普通的 替换 minipage \centering

\bf不应再使用诸如这样的命令。您应改用\bfseries

由于您没有提供背景图像,我将其注释掉。它不会影响其他数据的定位。

LaTeX 输入文件

这是新的建议,这只是游戏的一部分。这可能是输入文件。我试图让它尽可能简单。

%% Use the new template
\documentclass[flyer]{announcement}

\begin{document}
%% First speaker
\authorname{Prof. Dr. Drofnats}
\authorinfo{Stanford University, Department of Typography}
\talkdate{2017-02-03}\talktime{2pm--3pm}
\talkroom{\dom}
\talktitle{There is no such thing as good typography}
\host{Joe Green}
\announce
%% Second speech, same author, only title and time differ.
\talktitle{Against unreadability}
\talktime{3pm--5pm}
\announce
\end{document}

新模板

不幸的是,在我的时区,已经很晚了。太晚了,无法创建一个完整的示例。也许明天我可以添加更多魔法。

%%%
%%% @(#) announcement.cls -- Announcements as flyer or as poster
%%%
%%% Time-stamp:  <2017-02-01 23:08:00 tmjb>
%%%
%%%
%%% @(#)       $Id: $
%%% @(#) $Keywords: Announcements, Flyer, Poster $
%%%
%%%
%%%           File: /Users/tmjb/Desktop/LaTeX-Test/announcement.cls
%%%        Project: 
%%%    Description: This is a meta template, which calls the default
%%%                 class and adds some magic.
%%%        Version: $Revision:  $
%%%         Author: tmjb -- Jan Braun <[email protected]>
%%%     Maintainer: tmjb -- Jan Braun <[email protected]>
%%%  Creation-Date: Wed Feb  1 2017 -- Jan Braun <[email protected]>
%%%      Copyright: (c) 2017 Jan Braun Creative Commons Licence 
%%%

%%% ------------------------------------------------------ &Change Log ---
%%%
%%% $Log: $


%%% ============================================================ &Code ===

%%% ---------------------------------------------------- &Package Name ---
% \NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{announcement}[2017/02/01 Announcements as flyer or as poster V 0.1.1]


%%% ------------------------------------------------------- &Variables ---
%% We need some variables, to store and indicate which options (see
%% later) are choosen ...
\newif\if@flyer                 % for Option flyer



%%% --------------------------------------------------------- &Options ---
%% Options are definid by the main package or for this special style
%% file.  Just add them in square brackets like this:
%% \usepackage[final,foo,bar]{announcement.sty}
%% I advise, to avoid using final and draft in package related
%% options, as the are normally handed over from the main class
%% package options.
%%
%% ............................................................ &draft ...
%% Option flyer is used to print smaller anouncements.  Usual
%% papersize in europe is DIN A4.
\DeclareOption{flyer}{
  \@flyertrue
  %% insert your desired paper size here
  \def\paper@size{a4paper}
}

%% ............................................................ &final ...
%% Option poster is used to print a bogger announcement.  Usual
%% papersize in europe is DIN A1 or even DIN A0.  Adapt it to your
%% needs.
\DeclareOption{poster}{
  \@dflyerfalse
  \def\paper@size{a0paper}
}


%% ....................................................... &Undeclared ...
%% This one is for any option, which was not declared before.
\DeclareOption*{%
  \if@flyer%
    \PassOptionToClass{\CurrentOption}{article}%
  \else%
    \PassOptionToClass{\CurrentOption}{poster}%
  \fi%
}%

%% Set the options.
\ExecuteOptions{flyer}
\ProcessOptions\relax



%%% -------------------------------------------------------- &Messages ---
%% Print out some warning messages, while compiling the text.
\if@flyer
  \typeout{\MessageBreak announcement.sty: WARNING! FLYER-mode is in use! \MessageBreak }
\fi



%%% -------------------------------------------------------- &Packages ---
%%
%% To get all definitions of this style to work, we need some more
%% packages.  They are automatically loaded here.
%%
\if@flyer%
  \RequirePackage[
  \paper@size,
  left=1cm,
  right=1cm,
  top=4cm,
  bottom=2cm]{geometry}
\else%
  \RequirePackage[
  \paper@size,
  left=4cm,
  right=4cm,
  top=16cm,
  bottom=6cm]{geometry}         % for page layout
\fi%
\RequirePackage{xcolor}         % for colors

%%% ====================================================== &Definitions ===

%%% ---------------------------------------------------------- &Colors ---
%%% 
%%% Define the most used colors
\definecolor{redA}{HTML}{8D3B33}
\definecolor{aqua}{HTML}{008D9B}


%%% ------------------------------------------------ &Constant-Strings ---
%%% 
%%% Define constant strings
\def\hssb{HSSB, Room 105}
\def\dom{Domenici Auditorium, Room 1220}
% to be continued


%%% --------------------------------------------------------- &Layouts ---
%%% 
%%% Define some helpfull constants and commands concerning the layout.

%% Define different fontsizes, depending on flyer or poster
%% target
\if@flyer%
  \def\titlefont@size{\fontsize{20}{24}}
  \def\infofont@size{\fontsize{10}{12}}
  \def\smallfont@size{\fontsize{8}{10}}
  \backgroundsetup{
    scale=1,
    angle=0,
    opacity=1,  %% adjust
    contents={\includegraphics[width=\paperwidth,height=\paperheight]{cmbd_watermark}}
  }
\else%
  \def\titlefont@size{\fontsize{60}{72}}
  \def\infofont@size{\fontsize{30}{36}}
  \def\smallfont@size{\fontsize{24}{30}}
\fi%
%% 
%% The rest of the commands does not depend on the target.
\def\talk@titlefont{\infofont@size\bfseries\itshape\selectfont\color{redA}}
\def\talk@authorfont{\titlefont@size\bfseries\upshape\selectfont\color{redA}}
\def\talk@authorinfofont{\smallfont@size\upshape\selectfont\color{redA}}
\def\talk@datetimefont{\infofont@size\bfseries\upshape\selectfont\color{aqua}}
\def\talk@hostfont{\smallfont@size\itshape\selectfont\color{black}}


%%% ------------------------------------------------------- &Variables ---
%% Define the internal variables, we need
\def\talk@date{}
\def\talk@time{2pm}
\def\talk@location{\hssb}
\def\talk@author{}
\def\talk@authorinfo{}
\def\talk@title{}
\def\talk@host{Dr. Joe Doe}


%%% --------------------------------------------------- &User-Commands ---
%%% 
%%% The following commands define the user space commands to
%%% manipulate the contents of the above variables
\newcommand{\authorname}[1]{\def\talk@author{#1}}
\newcommand{\authorinfo}[1]{\def\talk@authorinfo{#1}}
\newcommand{\talktitle}[1]{\def\talk@title{#1}}
\newcommand{\talkdate}[1]{\def\talk@date{#1}}
\newcommand{\talktime}[1]{\def\talk@time{#1}}
\newcommand{\talkroom}[1]{\def\talk@room{#1}}
\newcommand{\talkhost}[1]{\def\talk@host{#1}}


%%% -------------------------------------------------------- &Announce ---
\newcommand{\announce}{%
  %% distribute all \announcements evenly on the page.  Center it
  %% horizontally. 
  \vspace*{\fill}%
  \centering%
  %% Start with the date, time info
  \talk@datetimefont%
  \talk@date\\%
  \talk@time\\[2ex]              % use font dependend skips
  %% Print the author name and the info
  \talk@authorfont\talk@author\\[0.8ex]%
  \talk@authorinfofont\talk@authorinfo\\[2ex]%
  %% Print the title of the speech
  \talk@titlefont\talk@title\\[2ex]%
  %% Last but not least, the room and host
  \talk@datetimefont Room: \talk@room\\%
  \talk@hostfont Host: \talk@host\\%
  %% dont forget the vertical space
  \vspace*{\fill}%
}%

%%% Load the package
\if@flyer%
  \LoadClass{article}%
\else%
  \LoadClass{poster}%
\fi%

%% 
%% No pagenumbering and headings.
\pagestyle{empty}

\endinput
%%% ============================================================= &EOF ===

%%% Local Variables:
%%% mode: LaTeX
%%% TeX-engine: luatex 
%%% TeX-master: "test.tex"
%%% TeX-parse-self: t
%%% TeX-auto-save: t
%%% End:

结果

这是传单的结果。

注意:

我的示例模板类适用于该flyer选项。

如果要使用 -option,我已经编写了使用poster类文件的代码poster,但我尚未验证这是否有效。也许您必须搜索 TeX.SE 才能找到可用于您目的的模板。

当然,还有一些工作要做,例如修改传单和海报的边距、调整背景图像等等。

(说到背景图像:我在产生结果后插入了该代码。)

在此处输入图片描述

相关内容