Archive

Posts Tagged ‘thailatex’

สร้างเอกสารภาษาไทย กับ RMarkdown

February 15th, 2017 Comments off

ถ้าจะสร้างเอกสารที่เป็น pdf ด้วย rmarkdown (จริงๆแล้วก็ต้องบอกว่า Knit) ใน RStudio ก็ต้องมี latex ติดตั้งลงบนเครื่องก่อน สำหรับท่านใดที่ตัดสินใจว่าจะลงผมแนะนำว่าให้ใช้ texlive ครับ และเพื่อตัดปัญหาว่าจะมีปัญหาเรื่อง package ต่างๆของ latex ผมแนะนำว่าก็ลงแบบทุกอย่างเลยแล้วกันครับ กินเนื้อที่ประมาณ 3 GB ครับ อีกอย่างจากประสบการณ์เราก็ไม่ค่อยอัพเดท latex กันบ่อยอยู่แล้ว

ผมใช้ rmarkdown สร้างเอกสารเป็น pdf อยู่บ่อยครั้งแต่ส่วนมากจะเป็นภาษาอังกฤษก็มีช่วงอาทิตย์ที่ผ่านมานี้ต้องทำเป็นภาษาไทยด้วย ก็เลยอยากแชร์อะไรบ้างครับ

code หลักๆ สำหรับให้ rmarkdown  มันสร้างภาษาไทยเป็น pdf ได้ก็เพียง load package ที่จำเป็นสำหรับภาษาไทยใน latex ครับ โดยผมแนะนำว่าเพื่อความง่ายก็ขอให้เข้ารหัสสำหรับเอกสารหรือไฟล์ .Rmd เป็นแบบ Unicode หรือ UTF-8 ครับและก็ใช้ xelatex เป็นตัวโปรแกรมหลักสำหรับ latex ครับ เพราะมันใช้ได้ดีกับภาษาไทยและก็ไม่ต้องกังวลเรื่องการตัดคำครับเพราะมันสามารถทำได้กับภาษาไทยเราครับ ตัวอย่าง code อยู่ด้านล่างนี้ครับ หลักก็มีแค่ส่วนของ head-includes:

---
title: "ทดสอบ" 
header-includes:
  - \usepackage{xunicode} 
  - \usepackage{xltxtra}
  - \defaultfontfeatures{Scale=MatchLowercase} 
  - \setmainfont[Scale=1.0]{Angsana New} 
  - \XeTeXlinebreaklocale "th"
  - \XeTeXlinebreakskip = 0pt plus 1pt 
output: 
   pdf_document: 
     latex_engine: xelatex
---

## R Markdown ภาษาไทย
อ ะ ไ ร สั ก อ ย่ า ง

มันต้องมีอะไรสักอย่างในจักรวาลนี้

ที่พลัดหลงไปจากมิติกาลเวลา

อะไรสักอย่างที่โคลัมบัสและยูลิซีสตกสำรวจ

อะไรสักอย่างที่นักดาราศาสตร์กรีกและอาหรับมิได้ค้นพบ

อะไรสักอย่างที่ศาสดาของโลกลืมเทศนาสั่งสอน

อะไรสักอย่างที่ขาดหายไประหว่างหลุมดำ

..

```{r cars}
summary(cars)
```

ผลลัพท์ที่ได้ก็ประมาณนี้ครับ

ส่วนใครที่ต้องการสร้างเอกสารแบบแปลกๆสวยๆ ผมอยากแนะนำให้ศึกษา latex เพิ่มครับ แล้วจะรู้ว่าใช้ rmarkdown สร้างเอกสารlatex สะดวกจริงๆ

###

มีคนถามมาว่าในกรณีที่ใช้ rmarkdown สร้างเอกสาร html ที่ chunk ของคำสั่ง r มีการ return ค่าที่เป็นภาษาไทย อย่างตัวอย่างด้านล่างนี้มันไม่มีข้อความอะไรออกมาเลย จะทำอย่างไรถึงแม้จะใช้ Sys.setlocate(locale=”Thai”) หรือ rmarkdown::render(“file.Rmd”,enconding = “UTF-8”) แล้วก็ตาม (กรณีใช้ R ใน Windows)

วิธีที่พอจะช่วยแก้ปัญหานี้ได้บ้างระหว่างรอการแก้จากผู้พัฒนาโดยตรงที่ผมแนะนำก็คือว่าแทนที่จะ ให้มัน return ภาษาไทยออกมา ก็ให้มัน return เป็นภาษาอังกฤษ แล้วค่อยแทนที่ภาษาอังกฤษนั้นด้วยภาษาไทยที่ต้องการในไฟล์ html ที่ถูกสร้างขึ้นมาโดยตรงลองดูตัวอย่างด้านล่างนี้ครับ

ในตัวอย่างนี้ข้อความที่จะแทนที่เป็นภาษาไทยถูกเก็บไว้อีกไฟล์ (“txt4replace.R”)

library(rmarkdown)
library(stringr)

writeoutput <- function(msg,filename) {
 con <- file(filename, "w")
 tryCatch({
 cat(iconv(msg, to="UTF-8"), file=con, sep="\n")
 },
 finally = {
 close(con)
 })
}

ReplaceHTML <- function(filename,outfile) {
 htmlcode <- readLines(filename, encoding = "UTF-8")
 #read TH txt
 source("txt4replace.R")
 newhtmlcode <- str_replace_all(htmlcode,txt4replace ) 
 writeoutput(msg = newhtmlcode,filename = outfile)
}


#generate html
render("myfile.Rmd")

#replace TH txt
suppressWarnings(ReplaceHTML("myfile.html","new_myfile.html"))
browseURL("new_myfile.html")

ตัวอย่างไฟล์ "txt4replace.R"

THtext <- c("ทดสอบ","โรงเรียน","เที่ยว")
Encoding(THtext) <- "UTF-8"
txt4replace<-c("Xtxt1" = THtext[1],
 "Xtxt2" = THtext[2],
 "Xtxt3" = THtext[3])

 

หรือจะใช้วิธีบังคับให้มันใช้ UTF-8 ตั้งแต่ตอน render เลยก็ได้เช่น

```{r}
enc <- function(txt,...) iconv(txt, to="UTF-8")
```
```{r, echo=FALSE, results='asis', render= enc}
fn ที่ return ภาษาไทย
```

 

Thai Latex บน Fedora 14 LXDE Desktop

January 24th, 2011 No comments

การติดตั้ง Thai Latex บน Fedora 14 LXDE Desktop

วิธีนี้ต้องมี gcc compiler ก่อนนะครับ ซึ่งติดตั้งได้เลยจากตัว Add/Remove Software

ก่อนอื่นต้องไป download ไฟล์พวกนี้ก่อนนะครับ

  1. ftp://linux.thai.net/pub/ThaiLinux/software/libthai/libdatrie-0.2.4.tar.gz
  2. ftp://linux.thai.net/pub/thailinux/software/thailatex/thailatex-0.4.4.tar.gz
  3. ftp://linux.thai.net/pub/thailinux/software/swath/swath-0.4.0.tar.gz

หลังจากนั้นก็แตกไฟล์พวกนี้ออกโดยที่อยู่folder ของใครของมัน

จากนั้นก็เริ่มติดตั้งโดยเริ่มที่ตัว libdatrie ก่อนครับ

ที่ terminal ก็เปลี่ยน folder ไปที่ folder ของ libdatrie จากนั้นก็พิมพ์

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

ตามด้วย

./configure

และ

make install

หลังจากนั้นก็ติดตั้ง swath โดยทำเช่นเดียวกันครับคือพิมพ์ ./configure แล้วตามด้วย make install

ต่อด้วย thailatex ครับทำเช่นเดียวกันกับ swath

เป็นอันว่าเสร็จแล้วครับ ผมใช้งานได้ไม่มีปัญหาครับ

ผมใช้ TexMakerX ในการแก้ไขไฟล์ Latex ครับ อาจต้องมีการปรับแต่งให้มันอ่านและบันทึกภาษาไทยโดยไปที่ Edit -> Setup Encoding… แล้วเลือก TIS-620 ครับ

%d bloggers like this:
Locations of visitors to this page