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