texlive framed

tex目次
/file/texlive framed/bfaf.png
2012.7.15

日本語スタイルファイルjsarticleを用いると無理やりした以下のコードでは大幅にレイアウトがずれることがわかったため方法を改めた。 texlive framed 改


  1. ソースコード
  2. snugshade
  3. texmaker wizard

/file/texlive framed/framed.png
滋賀大学 熊澤吉起氏のページ利用。

実践的にlatexで製本・レイアウト作業を行うと、framed.styライブラリがないとまともにレイアウトできないと思う。
framed.styはtexlive2012をインストールした場合 1 には既に/usr/local/texlive/2012/texmf-dist/tex/latex/framed/framed.styに存在しているためインストール作業は必要ない。
texソース上で \usepackage{framed} することで既に利用可能な状態である。


※上記滋賀大学 熊澤吉起氏のページのtexサンプルファイルはsjisコードであるため、linuxでutf8環境がデフォルトである場合にはiconv,sedで変換する。

iconv -f SHIFT-JIS -t UTF-8 web0046.tex > web0046utf8.tex
sed 's/¥/\\/g' web0046utf8.tex > web0046utf8sed.tex

ソースコード

上部関数定義で熊澤氏のコードをそっくりそのまま使っている。
hspace,noindentなど本来自前で画一的にスタイル調整するtexを無視して低レベルAPIで直接移動させており、恐らくは本来やってはいけない好ましくない手段だとは思われるが私にそれ以上のスキルはない。

\documentclass[10pt,a4paper,twocolumn]{book}
\usepackage[utf8]{inputenc}
\usepackage{framed}
\usepackage{color}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}

\definecolor{lightgray}{rgb}{0.75,0.75,0.75}
\newenvironment{lightgrayleftbar}{%
  \def\FrameCommand{\textcolor{lightgray}{\vrule width 1mm} \hspace{-1em}}% 
  \MakeFramed {\advance\hsize-\width \FrameRestore}}%
{\endMakeFramed}


\makeatletter
\newcommand*{\frametitle}[1]{\strut#1}
\newif\ifcontframe

\newcommand*{\Fr@meSetup}[2]{%
  \fboxrule=\FrameRule \fboxsep=\FrameSep
  \global\contframefalse
  \def\Fr@meFirst{\textbf{#2}}%
  \def\Fr@meCont{\textbf{#1}}%
  \def\FrameCommand##1{%
    \Title@Fr@me{\Fr@meCurrent}{##1}%
    \global\let\Fr@meCurrent\Fr@meNext
    \ifcontframe
      \global\let\Fr@meNext\Fr@meCont
    \fi
    \global\contframetrue}%
  \global\let\Fr@meCurrent\Fr@meFirst
  \global\let\Fr@meNext\Fr@meFirst}

\newcommand*{\FrameTitle}[1]{%
  \nobreak \vskip -0.7\FrameSep
    \rlap{\frametitle{#1}}\nobreak\nointerlineskip
    \vskip 0.7\FrameSep}

\newenvironment{titledframe}[2][\Fr@meFirst\ (cont.)]{%
  \def\Title@Fr@me##1##2{%
    \vbox{\FrameTitle{##1}%
      \noindent\fbox{##2}}}
  \Fr@meSetup{#1}{#2}%
  \MakeFramed{%
    \advance\hsize-\width
    \advance\hsize -2\FrameRule
    \advance\hsize -2\FrameSep
    \FrameRestore}}%
  {\global\contframefalse
   \endMakeFramed}
\makeatother

\begin{document}

\vspace*{0mm}

\begin{titledframe}{Exercise $\textcircled{3}$}
現在、保育士の手元にいくつかの飴がある。この飴を5人の子どもに同じ数だけ配ると3個あまり、6人の子どもに同じ数だけ配ると5個あまる。14人の子どもに同じ数だけ配ったときにあまった飴の個数としてありうるものはどれか。
	
ただし、飴の個数は100個未満であるものとする。
		
	\vspace{3mm}
	\hspace{-1.4em}

	\begin{tabular}{l r}
		\bf{1} & 7個 \\
		\bf{2} & 8個 \\
		\bf{3} & 10個 \\
		\bf{4} & 11個 \\
		\bf{5} & 12個 \\
	\end{tabular}
	
\end{titledframe}

\newpage

\begin{lightgrayleftbar}
	\begin{description}
	\item[解説:]\noindent{}\mbox{}\\
		\hspace{1em}保育士が5人に同じ個数の飴を配ると3個あまることから、飴の個数は(5で割ると3あまる自然数)であることがわかる。また、6人に同じ個数を配ると5個あまることから、飴の個数は(6で割ると5あまる自然数)であることがわかる。
		
		\hspace{1em}(5で割ると3あまる自然数)+2=(5の倍数),(6で割ると5あまる自然数)+1=(6の倍数)より、(5で割ると3あまる自然数)+7=(5の倍数),(6で割ると5あまる自然数)+7=(6の倍数)であり、(飴の個数)+7は(5の倍数)かつ(6の倍数)なので(30の倍数)であり、(飴の個数)=(30の倍数)-7となる。
		 
		\hspace{1em}ここで、飴の個数を考えると、100個未満であるので、23個、53個、83個の場合があり、14人に配ったときのあまりはそれぞれ9個、11個、13個となる。このうち、選択肢にあるものは11個であるので、正解は4となる。
	\end{description}
\end{lightgrayleftbar}

\end{document}
download /file/texlive framed/framedwizard.tex

snugshade

なお、snugshadeを使う際には

\usepackage{amsmath}

\definecolor{shadecolor}{gray}{0.90}

の定義が必要であった。

texmaker wizard

texmakerはウィザードを通じて多様なライブラリを作ってくれる。ある程度ソフト側でやってくれるのでライブラリ名を知らなくてもいい。
/file/texlive framed/wqs.png
メニューバーよりWizard > Quick Startで利用できる。

    last modified: 15 July 2013 [ View wiki source Close ]
     
SEARCH DIFFERENCE ATTACHMENT RECENT POST