文字数と行数指定で余白も指定したい

文字数と行数指定で余白も指定したい

- T Y の投稿
返信数: 6
タイトルで上手く表現できなくてすみません.

レポートで,
余白は上25mm,下30mm,左右各25mm,1頁35行で1行の文字数は35文字程度とする.
と指示が出たのですが,上手くWordのように均等に文字が広がりませんでした.
私は次のようにプリアンブルに記述しました.

\documentclass[10.5pt,titlepage,a4paper]{jsarticle}
\setlength{\oddsidemargin}{-0.04truecm}
\setlength{\topmargin}{-0.04truecm}
\setlength{\headheight}{0mm}
\setlength{\headsep}{0mm}
\setlength{\textheight}{35\baselineskip}
\setlength{\textwidth}{35zw}

しかし,実行すると,確かに一頁35行,1行の文字数は35文字くらいになるのですが,右側余白が余りすぎるのと,下側余白も余りすぎていました.

どう設定すればWordのように行数,文字数を減らしても均等に配置してくれてかつ,余白を設定できるのでしょうか?

T Y への返信

Re: 文字数と行数指定で余白も指定したい

- Akira Kakuto の投稿
大体でよければ,

\documentclass[12pt,titlepage,a4paper]{jsarticle}
\setlength{\oddsidemargin}{-0.04truecm}
\setlength{\topmargin}{-0.04truecm}
\setlength{\headheight}{0mm}
\setlength{\headsep}{0mm}
\setlength{\textheight}{24.7truecm}
\setlength{\textwidth}{16truecm}
\renewcommand{\baselinestretch}{1.029}
\begin{document}
\kanjiskip=2truept plus .4truept minus .4truept

\end{document}
Akira Kakuto への返信

Re: 文字数と行数指定で余白も指定したい

- T Y の投稿
角藤先生,ありがとうございます.
無事,指示通りの用紙が完成しました.

恐縮なのですが,このプリアンブルに書かれた数値の計算過程を教えていただけないでしょうか?
topmarginとoddsidemarginが-0.04なのは,実際の余白から1インチ分引いた値であるので,

2.5 - 2.54 = - 0.04cm

であるというのはわかりますし,textwidthが16cmなのは,

21cm(A4用紙の幅) - (2.5*2) (左右余白) = 16cm

とわかるのですが,textheightが24.7cmであるとか,baselinestretchを1.029倍している根拠がよくわからないのです.

恐れ入りますが,ご教授よろしくお願いします.

T Y への返信

Re: 文字数と行数指定で余白も指定したい

- 前田 一貴 の投稿
文字数,行数指定と余白の話は過去ログを検索すると色々出てきますし,
そうした指定の是非も議論されているようですが,それはともかくとして,
例えば geometry パッケージに設定を任せればこんな感じでできるのではないでしょうか.

\documentclass[12pt,a4paper]{jsarticle}
\usepackage[truedimen,top=25truemm,bottom=30truemm,hmargin=25truemm]{geometry}
\begin{document}
\makeatletter
\newcount\@chars\newcount\@lines
\@chars=35                      % 1行の文字数
\@lines=35                      % 1ページの行数

\newdimen\@kanjiskip
\@kanjiskip=\dimexpr(\textwidth-1zw*\@chars)/\numexpr\@chars-1
\newdimen\@@kanjiskip
\@@kanjiskip=\dimexpr\@kanjiskip/10

\baselineskip=\dimexpr\textheight/\@lines
\kanjiskip=\@kanjiskip plus \@@kanjiskip minus \@@kanjiskip
\parindent=\dimexpr\parindent+\@kanjiskip
\makeatother

% 本文

\end{document}
前田 一貴 への返信

Re: 文字数と行数指定で余白も指定したい

- 前田 一貴 の投稿

すみません.\baselineskip より \baselinestretch の方が良いですね.

\usepackage{calc}

しておいて,

\setlength{\@tempdima}{1pt*\ratio{\dimexpr\textheight/\@lines}{\baselineskip}}
\renewcommand{\baselinestretch}{\strip@pt\@tempdima}\selectfont

参考:[qa:28668] Re: 行数を指定して行間を設定したい

あと,\kanjiskip と \parindent も文字サイズを変えたときにリセットされてしまうので,こちらも本当はちゃんと考えないとだめですね.(\@setfontsize あたり?)

Akira Kakuto への返信

Re: 文字数と行数指定で余白も指定したい

- 前田 一貴 の投稿
これだけだとインデントが不恰好なので,\kanjiskip の次の行に

\parindent=\dimexpr 1zw+2truept

も入れておくと良さそうです.
前田 一貴 への返信

Re: 文字数と行数指定で余白も指定したい

- T Y の投稿
前田様、ありがとうございます。

とりあえず、余白を設定することが出来ました。

私の知識不足のため、教えてくださったソースの意味を解釈するのに時間がかかりそうです。