> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/ja/sononotopikku/25-how-to-write-a-latex-class-file-and-design-your-own-cv-part-1.md).

# LaTeXクラスファイルの書き方と自分だけの履歴書のデザイン（第1部）

第1部 | [第2部](/latex/ja/sononotopikku/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.md)

**著者: James Allen（2011年3月）**

誰もがプロフェッショナルに見えるCVを望んでおり、それを実現するLaTeXテンプレートは数多くあります。しかし、私のような人なら、自分のCVを自分のものとして持ち、独自のものにしたいはずです。つまり、見た目や雰囲気を自分でカスタマイズできる必要があるということですが、LaTeXではそれが非常に難しいことがあります。このブログ記事シリーズでは、独自のカスタムクラスファイルを作成する手順を案内し、CVを望みどおりの形に整えるのが簡単だと示したいと思います。ここではCVスタイルに焦点を当てますが、方法はあらゆる種類の文書に対して同じです。

### クラスファイルとは？

LaTeXファイルで `\documentclass{article}` と書くと、クラスファイル `article.cls`を読み込んでいます。これは次のようなコマンドをすべて定義します。 `\section` や `\title` これらは文書の構造化に使われます。また、これらのコマンドがページの書式やレイアウトにどう影響するかも設定します。

### 自分のクラスファイルを設定する

文書の書式をカスタマイズする最もきれいな方法は、その情報すべてを個人用のクラスファイルにまとめておくことです。これにより、文書の構造と書式を明確に分離でき、再利用もしやすくなります。設定は簡単なので、次の内容を持つcv.texという文書を作成してください:

```latex
\documentclass{my_cv}
\begin{document}
\section{教育}
\subsection{どこにもない大学}
\section{職歴}
\subsection{ABC Limited.}
\end{document}
```

これはカスタムクラスファイル `my_cv.cls`を読み込もうとしていますが、まだ存在しません。 `my_cv.cls` を `cv.tex` と同じディレクトリに作成し、そこに次の行を書いてください:

```latex
\LoadClass{article}
```

今この文書をコンパイルすると、ヘッダーがデフォルトのarticleスタイルで表示されるはずです。

では、ここで何が起こったのでしょうか？クラスファイルには、LaTeXを正しく動かすための多くの書式情報と内部設定を含める必要がありますが、それらをすべて手入力したくはありません。代わりに、新しいクラスファイルの基礎として `article.cls`を使うことができます。私たちは `\LoadClass` ありません `article.cls` を使って、その中で定義されたコマンドとスタイルをすべて読み込みます。通常の `\documentclass` コマンドを使って `article.cls` なぜなら `\documentclass` を含めるのではない、という点に注意してください。これはLaTeX文書の最初の部分で一度だけ呼び出すべきです。

### LaTeXにクラスを知らせる

すべてのクラスファイルは、以下のような2行で始めるべきです。これは `my_cv.cls` の先頭に追加してください。

```latex
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{my_cv}[2011/03/26 My custom CV class]
```

この `\NeedsTeXFormat` コマンドは、そのパッケージがどの版のLaTeX向けかをコンパイラに伝えます。現在のLaTeXの版はLaTeX2eで、ほとんどすべての配布版がこれを使っています。

この `\ProvidesClass` コマンドは、パッケージに関するいくつかの情報をコンパイラに与えます。最初の引数はクラスファイルのファイル名と一致していなければならず、そのパッケージの名前をLaTeXに伝えます。2つ目の引数は任意で、ログやその他の場所に表示されるクラスの説明を与えます。説明は必ず上の形式とまったく同じ日付で始める必要があり、その日付はパッケージが最後に変更された日であるべきです。これはクラスを読み込む際に、その版が十分に新しいかどうかを確認するために使えます。たとえば、次のように読み込む場合 `\documentclass{my_cv}[2012/01/01]` で、クラスの説明にある日付より新しい日付を指定すると、クラスが古いという警告が表示されます。

### セクション見出しの変更

標準のarticleのセクション見出しはCVにはあまり合わないので、もっと洗練されたものに置き換えたいところです。そのために、 `\section` コマンドを再定義してカスタム見出しを出力できます。

幸い、 `という優れたパッケージがすでにあり、` を簡単にカスタマイズする方法を提供してくれます。これをクラスファイルに次のように含めてください:

```latex
\RequirePackage{titlesec}
```

ここでは `\RequirePackage` を、通常の `\usepackage` コマンドではなく使うべきです。というのも、私たちはクラスファイルの中にいるからです。 `\RequirePackage` コマンドは、異なるスタイルファイルやクラスファイルから複数回呼び出されても、各パッケージが一度しか読み込まれないようにします。

この `という優れたパッケージがすでにあり、` パッケージは `\titleformat` コマンドを提供し、セクション見出しをカスタマイズできます。 `my_cv.cls` の末尾に次の内容を追加して、見出しの書式をカスタマイズします:

```latex
\titleformat{\section}         % \section コマンドをカスタマイズ
  {\Large\scshape\raggedright} % \section 見出しを大きく（\Large）、
                               % スモールキャピタル（\scshape）にして左揃え（\raggedright）にする
  {}{0em}                      % 'Section ...' のように、すべてのセクションに接頭辞を付けるために使える
  {}                           % 見出しの前にコードを挿入するために使える
  [\titlerule]                 % 見出しの後に水平線を挿入する
```

これを `cv.tex` 今コンパイルすると、CVにより適した見出しが表示されるはずです:

![Screenshot1.png](/files/1747084cc2cb37b77fe925df2f040c718a89bee3)

\subsection の見出しもカスタマイズできます:

```latex
\titleformat{\subsection}
  {\large\scshape\raggedright}
  {}{0em}
  {}
```

サブセクションも同じスタイルになりました:

![Screenshot2.png](/files/e464c457cc21baaac4f5d187687751ff09108807)

用意されている書式オプションをいくつか試して、好みのものを見つけてください:

* `\bfseries`, `\itshape`: 見出しを太字または斜体にする;
* `\scshape`: スモールキャピタル;
* `\small`, `\normalsize`, `\large`, `\Large`, `\LARGE`, `\huge`, `\Huge`: フォントサイズを設定する;
* `\rmfamily`, `\sffamily`, `\ttfamily`: フォントの種類をそれぞれセリフ体、サンセリフ体、タイプライター体に設定する。

### セクション見出しに日付を追加する

セクション見出しに日付を含められるような新しいコマンドを定義できます。クラスファイルに次の内容を追加してください:

```latex
\newcommand{\datedsection}[2]{%
  \section[#1]{#1 \hfill #2}%
}
\newcommand{\datedsubsection}[2]{%
  \subsection[#1]{#1 \hfill #2}%
}
```

これにより、2つの新しいコマンドが定義されます `\datedsection` や `\datedsubsection` 。これらは2つの引数を取ります。1つ目は先ほどと同じセクション名で、2つ目はページの右側に組版される日付です。 `\hfill` コマンドは、可能な限り空白を埋めるようLaTeXに指示し、その結果、第2引数（`#2`）をページの右側へ押し出します。 `cv.tex` を次のコマンドに置き換えてください:

```latex
\documentclass{my_cv}

\begin{document}

\section{教育}
\datedsubsection{University of Nowhere}{2004--2008}
私は2004年から2008年までUniversity of Nowhereに通っていました。

\section{職歴}
\datedsubsection{ABC Limited.}{2008--Now}
私は2008年からABC Limitedで働いています。

\end{document} ​
```

これでCVに日付が入りました:

![Screenshot3.png](/files/a29731acbd73aa0d9902c40f40faeba85e51feaf)

### 結論

以上でこのガイドの第1部は終わりです。うまくいけば、これだけで役立つクラスファイルを自分で作り始めるのに十分な内容をカバーできたはずです。すでにそれなりのCVテンプレートに見えるものを作るのに、さほど多くのコマンドは必要ありませんでしたし、カスタマイズできることはまだほんの表面しか触れていません。このガイドの次のいくつかの部分では、クラスにオプションを渡して設定する方法、見栄えのよいタイトルを作る方法、そして一般的なレイアウトオプションを設定する方法についてお話しします。

お読みいただきありがとうございました！

なお、私はクラスファイル作成の経験はまだ比較的浅いので、ここで述べたことより良い方法をご存じの方がいれば、ぜひ教えてください。

第1部 | [第2部](/latex/ja/sononotopikku/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/ja/sononotopikku/25-how-to-write-a-latex-class-file-and-design-your-own-cv-part-1.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
