在标题页上留出三个徽标的空间

在标题页上留出三个徽标的空间

我正在根据我所在大学的要求实现一个论文模板。我希望在标题页中留出三个徽标的空间,一个大徽标在中间,两个较小的徽标在两边。但是,为了保持模板足够灵活,我想让用户有机会只使用一个(或两个)徽标。我通过以下方式实现了这一点

\renewcommand{\maketitle}{\begin{titlepage}
    \centering
    \hfill
    \ifx \@smallLogoLeft \@empty
    \else
    \includegraphics[width=3cm,height=3cm]{\@smallLogoLeft}
    \fi
    \hfill
    \ifx \@LogoCenter \@empty
    \else
    \includegraphics[width=8cm,height=3cm]{\@LogoCenter}
    \fi
    \hfill
    \ifx \@smallLogoRight \@empty
    \else
    \includegraphics[width=3cm,height=3cm]{\@smallLogoRight}
    \fi
    \hfill
    
    \par
    \vspace{1cm}
    {\scshape\LARGE \@department \par}
    \vspace{2.5cm}
    {\huge\bfseries \@title \par}
    \vspace{2cm}
    {\Large\itshape \@author \par}
    \vfill
    \@titlepagesentence

    \vfill


    {\large \@submissiondate \par}
\end{titlepage}}

我认为这是解决问题的幼稚尝试。你们有什么建议可以更稳定地实现它?谢谢!

答案1

随着时间的推移,我发现这个xcoffin包可以解决我所有的问题,比如如何将东西准确地放在我想要的位置。这在封面设计中非常有用,尤其是论文,因为它们通常有非常严格的要求。

这个想法很简单:将物品放入带有把手的特殊盒子(棺材)中,然后使用这些把手连接棺材(\Join...),并在必要时添加水平或垂直移位。一个棺材,我称之为 Frame,尺寸为零,用作其他棺材的收集器。

这样,如果您注释掉 a,Join棺材就会从程序集中消失,而不会干扰其他程序集。如果您在 ( Set) 中不填充任何内容,也会发生同样的事情。和\csr就是\crl 这样做的。

我定义了\maketitlex 两个可选参数,即左侧和右侧徽标,因此有 4 种可能的结果,如图所示。

请参阅我对类似问题的更完整回答:

我需要一个相当复杂的学术版布局,但不知道从哪里开始

我添加了章节、标题和一些文本来模拟更真实的场景。

 \documentclass[a4paper]{book}

\usepackage{kantlipsum} %dummy text 
\usepackage{xcoffins}   
\usepackage{fancyhdr} % 
\fancypagestyle{empty}{}
\fancyhf{}
\renewcommand{\headrule}{}
\fancyhead[RE,LO]{\rmfamily \small \nouppercase \leftmark}

\usepackage{graphicx} 
    
\NewCoffin\Frame
\NewCoffin\smallLogoLeft
\NewCoffin\smallLogoRight
\NewCoffin\smallLogoAbove
\NewCoffin\LogoCenter
\NewCoffin\departmentx
\NewCoffin\titlex
\NewCoffin\authorx

\usepackage{xparse}
    
\NewDocumentCommand{\maketitlex}{ O{} O{}  m }{%    
        \SetHorizontalCoffin\Frame{} % empty before reuse
        \csl{#1}%
        \csr{#2}%
        \SetHorizontalCoffin\LogoCenter{\includegraphics[width=150pt, height=50pt]{#3}} 
        \SetHorizontalCoffin\departmentx{\scshape\LARGE Department of lost objects} 
        \SetVerticalCoffin\titlex{\textwidth}{\Huge \sffamily \centering My most fantastic accomplishment \par so  far} 
        \SetHorizontalCoffin\authorx{\Large\itshape Just me}    
        \JoinCoffins\Frame[hc,vc]\LogoCenter[l,vc](100pt,0pt)
        \JoinCoffins*\Frame[\LogoCenter-r,\LogoCenter-vc]\smallLogoRight[l,vc](20pt,0pt)
        \JoinCoffins*\Frame[\LogoCenter-l,\LogoCenter-vc]\smallLogoLeft[r,vc](-20pt,0pt)    
        \JoinCoffins*\Frame[\LogoCenter-hc, \LogoCenter-b]\titlex[hc,vc](0pt,-100pt)
        \JoinCoffins*\Frame[\titlex-hc,\titlex-b]\authorx[hc,t](0pt, -40pt)
        \JoinCoffins*\Frame[\authorx-hc,\authorx-b]\departmentx[hc,t](0pt, -120pt)  
        \noindent\TypesetCoffin\Frame(0pt, -100pt)
        \cleardoublepage    
}
    

%%https://tex.stackexchange.com/questions/127502/difference-between-if-and-ifx
        
\newcommand{\csr}[1]{%
    \if\relax\detokenize{#1}\relax
        \SetHorizontalCoffin\smallLogoRight{}
    \else
        \SetHorizontalCoffin\smallLogoRight{\includegraphics[width=30pt]{#1}}%
    \fi
}       
        
\newcommand{\csl}[1]{%
    \if\relax\detokenize{#1}\relax
        \SetHorizontalCoffin\smallLogoLeft{}
    \else
        \SetHorizontalCoffin\smallLogoLeft{\includegraphics[width=30pt]{#1}}
    \fi
}       

\begin{document}       

\pagestyle{empty}   

\maketitlex{example-image-A}    %only center

\maketitlex[example-image-B][]{example-image-A} %center + left

\maketitlex[][example-image-C]{example-image-A}  %center +right

\maketitlex[example-image-B][example-image-C]{example-image-A}  %all


\pagestyle{fancy} 
\chapter{Introduction}

\kant[1-10]

\end{document}

A 文学士

交流 ABC

相关内容