Help us understand the problem. What is going on with this article?

LaTeXにソースコードを【美しく】貼る方法

お知らせ

こちらの記事の内容は2019年で更新を停止しています。
最新の情報は以下のURLにて随時更新しますのでご確認ください。
https://ta-b0.hateblo.jp/entry/2020/08/13/001223

概要

$\rm\LaTeX$ にソースコードを美しく貼る.
具体的には,

  • ソースコードは等幅フォント
  • 左側に行数を表示
  • キャプションはソースコードの上
  • キャプションは「ソースコードn」(n=1,2,3…)
  • キャプションの下とソースコード最終行の次に線を引く

を目指す.
また,おまけとして,

  • キャプション名を変える方法
  • キャプション番号を変える方法

も紹介する.

方法

jlisting.styのインストール

注:jvlistingで対応可とのコメントをいただきました。私は試していないのですが、参考までに。
jlisting.styは以下からダウンロードできます。
https://ie.u-ryukyu.ac.jp/e075729/2009/08/02/jlistingsty%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/

サンプル

sample.tex
\documentclass[a4j]{jarticle} %ここは関係ない
\usepackage{listings,jlisting} %日本語のコメントアウトをする場合jlisting(もしくはjvlisting)が必要
%ここからソースコードの表示に関する設定
\lstset{
  basicstyle={\ttfamily},
  identifierstyle={\small},
  commentstyle={\smallitshape},
  keywordstyle={\small\bfseries},
  ndkeywordstyle={\small},
  stringstyle={\small\ttfamily},
  frame={tb},
  breaklines=true,
  columns=[l]{fullflexible},
  numbers=left,
  xrightmargin=0zw,
  xleftmargin=3zw,
  numberstyle={\scriptsize},
  stepnumber=1,
  numbersep=1zw,
  lineskip=-0.5ex
}
%ここまでソースコードの表示に関する設定
\begin{document}
HelloWorldのソースコードを,ソースコード\ref{fuga}に示す.
…
\begin{lstlisting}[caption=hoge,label=fuga]
#include<stdio.h>
int main(){
   printf("Hello world!");
}
\end{lstlisting}
\end{document}

結果

スクリーンショット 2018-01-13 21.55.06.png

おまけ

キャプション名を変える方法

キャプション名「ソースコードn」を「プログラムn」に変えるには,\begin{document}の前に\renewcommand{\lstlistingname}{プログラム}と書く.

キャプション番号を変える方法

ここでは,jreport形式において,キャプション番号を「[chapter番号].[section番号].[subsection番号]-[そのsubsection内においてn番目]」に変更することを目標とする.

sample.tex
\documentclass[a4j]{jreport}\makeatletter
    \AtBeginDocument{
    \renewcommand*{\thelstlisting}{\arabic{chapter}.\arabic{section}.\arabic{subsection}-\arabic{lstlisting}}
    \@addtoreset{lstlisting}{section}}
\makeatother\begin{document}

この時,キャプション番号の一番後ろ(ハイフンの右側)の部分を1から数え直したいは,自分で都度リセットする必要がある.
そこで,数え直したい場所の直前に\setcounter{lstlisting}{0}を書くことで1にリセットすることができる.

ta_b0_
関西で大学生やってます.セキュリティやフォレンジックの研究してます.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした