¿©±â¼ óÀ½¿¡ ¸»ÇßµíÀÌ ´Ü¼øÈ÷ graph¸¸ ÀÛ¼ºÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó
ÁÖ¾îÁø µ¥ÀÌÅÍÀÇ ÃÖ´ë°ª, Æò±ÕÀ» ÇÔ²² Ãâ·ÂÇÏ´Â code¸¦
ÀÛ¼ºÇÏ´Â °ÍÀÌ ¸ñÀûÀÌ´Ù.
drawgraph.tex :
\documentclass[12pt]{report}
\usepackage{pst-plot}
\usepackage{perltex}
\perlnewcommand{\findmax}[1]{
#! /usr/bin/perl -w
use strict;
open(PERFD, "<$_[0]");
my ($maxday,$maxval) = (0,0);
while(<PERFD>) {
my ($day, $val) = split /\s+/, $_;
if ($maxday == 0){
($maxday,$maxval) = ($day,$val);
}
if ($val > $maxval) {
($maxday,$maxval) = ($day,$val);
}
}
$maxval= sprintf("%.2f",$maxval);
my $returnstr="($maxday, $maxval)";
return "\\rput(2,-2.7){MAX: $returnstr}";
}
\perlnewcommand{\findavg}[1]{
#! /usr/bin/perl -w
use strict;
open(PERFD, "<$_[0]");
my $numofdata=0;
my $average=0;
while(<PERFD>) {
++$numofdata;
my ($day, $val) = split /\s+/, $_;
$average += $val;
}
$average = $average / $numofdata;
$average= sprintf("%.2f",$average);
return "\\rput(7,-2.7){AVG: $average}";
}
\begin{document}
\pagestyle{empty}
\newcommand{\DFILE}{./perfdata.dat}
\readdata{\DATA}{./perfdata.dat}
\psset{xunit=1,yunit=0.8}
\begin{pspicture}(0,-2)(12,7)
\psset{showpoints=true,dotsize=0.1,plotstyle=line,linewidth=1pt}
\rput(0,7){Value}
\rput(11.7,0){Num}
\rput(5,-1.5){\bf{Example for perlTeX}}
\listplot[plotstyle=line,yunit=0.08cm,dotscale=2,linecolor=green]{\DATA}
\psaxes[dy=0.8cm,Dy=10,Dx=1]{->}(0,0)(11.10,6.5)
\findmax{\DFILE} % <--- \rput(3,-2.7){MAX: ÃÖ´ë°ª} À» Ãâ·Â
\findavg{\DFILE} % <--- \rput(7,-2.7){AVG: Æò±Õ°ª} À» Ãâ·Â
\end{pspicture}
\end{document}
À§ÀÇ code¸¦ ÅëÇØ perlTeXÀÇ ´ë·«ÀûÀÎ »ç¿ë¹ýÀ» ÀÍÈú ¼ö ÀÖ´Ù.
\perlnewcommand¶ó´Â perlTeXÀÇ macro Á¤ÀǸ¦ ÅëÇØ perl code¸¦ latex ÆÄÀÏ¿¡
³»Àå ½Ãų¼ö Àִµ¥, Ç×»ó Ãâ·ÂÀº return \rput(2,-2.7){MAX: $returnstr};
¿Í °°ÀÌ latex code·Î ÇÑ´Ù. Áï, perlÀÌ latex code¸¦ ¸¸µé¾î ÁÖ´Â °ÍÀÌ´Ù.
¿©±â¼ ÇÑ°¡Áö ÇÊÀÚ°¡ °æÇèÇÑ ¹Ù¸¦ ¿¹¸¦ µé¾î µ¡ºÙÀÌ°íÀÚ ÇÑ´Ù.
À§ÀÇ code¿¡¼ \findavg ÇÔ¼ö¿¡¼ÀÇ return °ªÀ» À§¿¡¼¿Í °°ÀÌ
return \rput(2,-2.7){AVG: $returnstr}; ·Î ÇÏÁö ¾Ê°í,
return $average; °ú °°ÀÌ °ª¸¸ ¹ÝȯÇÏ°Ô ÇÑ ÈÄ,
\findavg{\DFILE} ´ë½Å¿¡ \rput(3,-2.7){AVG: \findavg{\DFILE}}
°ú °°ÀÌ ÇÒ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. Å×½ºÆ® ÇÑ ¹Ù·Î´Â ÀÌ·¸°Ô Çصµ °°Àº
°á°ú¸¦ ¾òÀ» ¼ö ÀÖ¾ú´Ù. ±×·±µ¥, Á»´õ º¹ÀâÇÑ »óȲ¿¡¼ ÀÌ·¸°Ô
¼öÄ¡¸¸ perlTeX¸¦ ÅëÇØ Ãâ·ÂÇÏ°Ô¸é, stack overflow error ¸¦ ¹ß»ýÇÏ°Ô
µÇ´Â °æ¿ì°¡ ¹ß»ýÇÏ¿´´Ù. (±¸Ã¼ÀûÀ¸·Î ¿¹¸¦ µé¸é,
\psaxes[dy=0.8cm,Dy=10,Dx=1]{->}(0,0)(11.10,6.5) ¿¡¼ 0.8cmÀ̶ó´Â
°ªÀ» perlTeXÀÇ ³»ºÎ ¿¬»ê code¸¦ ÅëÇØ ¾ò¾îÁöµµ·Ï ÇÏ°íÀÚ ÇÒ ¶§,
±×·± °æÇèÀÌÀÖ´Ù.) µû¶ó¼ °á·ÐÀº, perlTeX¸¦ »ç¿ëÇÒ¶§´Â °¡±ÞÀûÀ̸é
¼öÄ¡ ÀϺκР¸¸ Ãâ·ÂÇÏ¿© latex code È ÇÏÁö ¸»°í, ´ÜÀ§ latex code
Àüü¸¦ À§ÀÇ ¿¹¿Í °°ÀÌ Ãâ·ÂÇÏ¿© ÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.