LoginSignup
2
2

More than 3 years have passed since last update.

[LaTex]\maketitleを再定義して、同じ行内に中央揃えと右揃えが混在したタイトルを書く

Last updated at Posted at 2021-01-23

こんな人向け

  • 卒論の概要集・卒論発表会の前刷りなどをLaTexでかきたい
  • 大学側から指定されたフォーマットの中に同じ行内で中央揃えと右揃えの文章が混在している.(左揃&右揃えの混在verの場合はこちらの記事の情報も使えると思います。->【tex】一行の中に右揃えと左揃えを混在したい!ので無理やりやったという話
  • \maketitleでは再現できなくね...?ってなってる.
  • ( \maketitleで表示したいタイトルが2種類(例えば、「修士論文」と「(研究テーマ)」)あって、\titleだけで太刀打ちできなくなっている.)

やりたいこと

  • 同じ行内で中央ぞろえと右揃えの文を出力したい
  • \maketitle を再定義する形でやりたい
  • ↓このような出力をしたい(特に1行目)

result.JPG

環境

  • Overleaf
  • upLaTex + dvipdfmx
  • jarticle

やり方

1.次の文章をコピーしてプリアンブルに貼り付ける

%2種類のtitileを使用するために、ここで1つ定義
%(大学等からのフォーマットで指定されている方)
\newcommand{\maezuri}{令和X年度 卒業研究前刷}
\makeatletter% "@"を含むマクロ名の変更を行う呪文
\renewcommand{\@maketitle}%@を忘れずにかいてください!
{%ここから
\begin{minipage}{.33\linewidth}%何も書かないブロック
\hfill
\end{minipage}
\begin{minipage}{.33\linewidth}%中央揃えするブロック
\centering
\large \maezuri 
\end{minipage}
\begin{minipage}{.33\linewidth}%右揃えするブロック
\begin{flushright} %右揃え
{\large \@date}
\end{flushright}
\end{minipage}
%ここまでで、中央揃え&右揃えを再現
\par \vskip 1.0em %1行間隔
\begin{flushright}
{\large \@author}
\end{flushright}
\par \vskip 1.0em %1行間隔
\centering 
{\large \@title}   
\par \vskip 2.0em %2行間隔
}
\makeatother%"@" を変更できない状態に戻す
%----------------------------
\title{題目:「ここに書く」}
\author
{
担当学生 おな まえ\\
指導教員 おな まえ
}
\date{令和X年Y月Z日}

2.\begin{document}直後に\maketitle ってかく

 やったことは\minipageをつかって3分割し、左はスペースで埋め(\hfill)、中央のブロックに中央揃え(\centering)したタイトル、右に右揃え(\flushright)した日付を書いただけです…

出力結果

 記事の頭に戻る。よかったね。このやり方だと、左揃え+右揃えのケースでもその他のケースでも対応できると思います.
 この話メインはここまでです.あとは補足など.

注意

 普段\renewcommandを使うときって\renewcommand{\macro名}[引数]{内容} と書くと思うんですけど,今回は

\renewcommand{\@maketitle}[引数]{内容}

と書きます.

 それはいくつかエラーが出るからなのですが(ちょっとここでハマった)、例えば前刷りとかは基本2段組みで書くと思うのですが、実は@をかかないとタイトルまで左側の段に収まってしまう形になってしまうというのがあります.

もともとの\maketitle の文はこちらのブログによると

■jarticle.styより抜粋■
\def\maketitle{\par
\begingroup
\def\thefootnote{\fnsymbol{footnote}}
\def\@makefnmark{\hbox
to 0pt{$^{\@thefnmark}$\hss}}
\if@twocolumn %ここ!!!!!!!!!!!!!!!!!!!!!!!
\twocolumn[\@maketitle]
\else \newpage
\global\@topnum\z@ \@maketitle \fi\thispagestyle{plain}\@thanks
\endgroup
\setcounter{footnote}{0}
\let\maketitle\relax
\let\@maketitle\relax
\gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
\def\@maketitle{\newpage
\null
\vskip 2em \begin{center}
{\jLarge \@title \par} \vskip 1.5em {\jlarge \lineskip .5em
\begin{tabular}[t]{c}\@author
\end{tabular}\par}
\vskip 1em {\jlarge \@date} \end{center}
\par
\vskip 1.5em}
\def\abstract{\if@twocolumn
\section*{$@35MW(J}
\else
\begin{center}
{\dm $@35MW(J\vspace{-.5em}\vspace{0pt}}
\end{center}
\quotation
\fi}
\def\endabstract{\if@twocolumn\else\endquotation\fi}

であり、きちんと段組みを変えたときの場合分けもされていることが分かります。
なので今回は\maketitleを完全に再定義しているというか部分修正したという感じに近いです。

今回のやり方で想定される問題と対策

  • 中央揃え(右揃え)の文章が長くてminipageの枠からはみだしてしまう

 minipage のサイズを調整しましょう.左のブロックと右のブロックの横幅サイズが同じであれば中央揃えももきれいにいくはずです

参考

今回の問題を解決するまでに参考にさせて頂いた記事

\maketitleの再定義に関する話
+ TEX Wiki/マクロの作成
+ @についての話
+ LaTeXでmonkey patching

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2