次のコードを使用しようとしています:
\documentclass{article}
\makeatletter
\def\@maketitle{%
\newpage
\null
\begin{center}%
\let \footnote \thanks
{\Large \MakeUppercase{\@title} \par}%
\ifthenelse{\equal{\@author}{}}{no author}%
{\vskip 1.5em\textsc{\setstretch{1.32}\@author\\\hfill}\par}%
\end{center}
\par
\vskip 4em\noindent}
\begin{document}
\maketitle
\end{document}
ただし、コンパイルされません。 を取り除いても\ifthenelse
動作しますが ( の前に を付けることでテストできます%
)、実際には を含める必要があります。 エラーは次のとおりです。
/tmp/gummi_V2UOCX:32: Use of \@item doesn't match its definition.
\@ifnextchar ... \reserved@d =#1\def \reserved@a {
#2}\def \reserved@b {#3}\f...
l.32 \maketitle
答え1
いくつか問題があります:
使用している
\ifthenelse
のはifthen
パッケージ(またはxifthen
)。同じことが
\setstretch
、setspace
。
\@author
しかし、より大きな問題は、が空であるかどうかを確認することです{}
。デフォルトのLaTeXドキュメントクラスは\@author
次のように定義されています。ないたとえnoが指定されていても、空になることはありません\author
。実際、no\author
が指定されている場合は、\@author
次のようになります(latex.ltx
):
\def\author#1{\gdef\@author{#1}}
\def\@author{\@latex@warning@no@line{No \noexpand\author given}}
\author
著者名を含むように再定義するだけです\@author
。そうでない場合は、デフォルトの出力は警告ですNo \author given
。次のただタイトルの残りの書式設定をどうしたいのかわからないので、その部分を変更します。
\documentclass{article}
\usepackage{setspace}% http://ctan.org/pkg/setspace
\makeatletter
\let\@emptyauthor\@author
\def\@maketitle{%
\newpage
\null
\begin{center}%
\let \footnote \thanks
{\Large \MakeUppercase{\@title} \par}%
\ifx\@author\@emptyauthor
no author%
\else% \author is supplied
\vskip 1.5em\textsc{\setstretch{1.32}\@author\\\hfill}\par
\fi%
\end{center}
\par
\vskip 4em\noindent}
\makeatother
\title{A title}
\begin{document}
\maketitle
\end{document}
アイデアは、\@author
プリアンブルの先頭がどのようになっているかをキャプチャすることです。その後、マクロ定義を正確に確認し、それに応じて分岐/条件を設定できます。変更なしで\@emptyauthor
保存され\@author
、テキストが\ifx\@author\@emptyauthor <true/no author> \else <false/author> \fi
条件を提供します。
しかし、指定したほうが簡単でしょう\author{no author}
…本当に。
日付を別の分岐出力として追加するには、
\makeatletter
\def\ifemptyarg#1{% http://tex.stackexchange.com/q/308/5764
\if\relax\detokenize{#1}\relax % H. Oberdiek
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi}
\let\@emptyauthor\@author
\def\@maketitle{%
\newpage
\null
\begin{center}%
\let \footnote \thanks
{\Large \MakeUppercase{\@title} \par}%
\ifx\@author\@emptyauthor
no author%
\else% \author is supplied
\vskip 1.5em\textsc{\setstretch{1.32}\@author\\\hfill}\par
\fi%
\par\expandafter\ifemptyarg\expandafter{\@date}{no date}{\@date}%
\end{center}
\par
\vskip 4em\noindent}
\makeatother
あなたの序文に。
\title{A title}
\date{}
\begin{document}
\maketitle
\end{document}