Vietnamen’s Weblog

Time, Chances, Diligence, Intelligence: which is the most important?

Archive for Tháng Tư 2009

LaTeX

with one comment

Hôm nay tôi muốn giới thiệu chút ít về LaTeX, một ngôn ngữ định dạng giúp soạn thảo các tài liệu (article, book, report) một cách professional. Về mặt editor, tôi lựa chọn emacs (xin xem bài TeX-editor)

Phần ngôn ngữ, tôi không đề cập ở đây. Chỉ nói sơ qua về các plug-in cần thiết để soạn thảo LaTeX trong emacs,  cấu trúc (template) một file định dạng LaTeX mà tôi hay dùng, và các mẹo vặt kèm theo.

AUCTeX

Một plug-in hữu hiệu để biên soạn LaTeX trong emacs.

  • Xóa các file tạm

M-x TeX-clean                    : xóa các file tạm

  • Save

C-x C-s

  • Compile

C-c C-c

  • C-c C-s: insert a new section, chapter, part…
  • C-c C-e: insert a new environment (custom or predefined).
  • C-c C-m: insert a new macro.
  • C-c C-f C-b: insert bold face text.
  • C-c C-f C-i: insert italics text.
  • C-c C-f C-e: insert emphasized text.
  • C-c C-f C-t: insert typewriter text.
  • C-c C-f C-d: delete the innermost font specification containing point.
  • C-c C-p C-d: parse the entire document, looking for embedded environments to preview.
  • C-c C-p C-p: preview the current embedded environment (or middle-click on the preview object).

References:

  1. http://emacsworld.blogspot.com/2008/04/cleaning-up-or-deleting-latex.html

Texlive-base package

Texlive-base là tuyển tập rất nhiều styles cần dùng cho LaTeX. Tuy nhiên dung lượng khá lớn. Nếu bạn không cần dùng nhiều như vậy, giải pháp là download từ CTAN các packages cần thiết về. Để đảm bảo khỏi phải tạo bản sao cũa mỗi styles cho các tài liệu khác nhau, ta sẽ thiết lập 1 đường dẫn chung để lưu trữ chúng. Cụ thể sẽ được nói tới ở phần Search TeX styles.

Bibtex mode

Bibtex mode là một mode hay dùng để soạn thảo file bibtex dùng để chứa các thông tin về các article, book, book chapter cần tham khảo.

References:

  1. http://jo.irisson.free.fr/bstdatabase/ [Search mọi loại style dựa trên Journal title]
  2. http://amath.colorado.edu/documentation/LaTeX/basics/steps/bibstyles.html

RefTex mode

RefTex là mode hay dùng giúp thêm các tham khảo vào trong file LaTeX dễ dàng.

  • Add bibliography referece

C-c [

  • Add link reference

C-c )

Mỗi khi file .bib được cập nhật. Thường bạn cần re-load lại file đó trong emacs để nội dung mới có thể được tìm thấy với RefTex. Để đơn giản bước đó, bạn chỉ cần set env-variable BIBINPUTS là đường dẫn tới thư mục gốc có chứa các file .bib. E.g. trong file ~/.bashrc

    export BIBINPUTS=".:~/latex/:"

hay trong ~/.profile

    BIBINPUTS=".:~/latex/:"

Mỗi lần nhấn C-c [ , Reftex sẽ tự động update nội dung mọi file .bib bên trong đường dẫn đó. Điểm hay là nó update cho mọi thư mục con.

chèn URL

Việc thêm url vào trong file TeX, sẽ được đơn giản nếu bạn bao lại với \url{…}, dùng package breakurl.

Ví dụ:

\url{https://vietnamen.wordpress.com}

Footnote

Nếu ai đã làm việc với \footnote{} rồi sẽ thấy là việc biên dịch hay có nhiều lỗi. Việc dùng \protect\footnote{} không phải là một giải pháp được khuyến khích. Để giải quyết, ta dùng package footmisc với option là stable.

\usepackage[stable]{footmisc}

ConTeXt

http://wiki.contextgarden.net/ConTeXt_and_emacs-muse

http://mwolson.org/projects/EmacsMuse.html

Search TeX styles

Có thể để các file style vào trong cùng 1 thư mục để dễ lưu trữ, giảm tiêu tốn bộ nhớ vì phải tạo các bản sao. Giải pháp dùng TEXINPUTS đã lỗi thời, cụ thể là chỉnh nội dung file ~/.bashrc

# Include shared LaTeX classes and BibTeX files in path, if LaTeX folder exists
if [ -d "~/latex" ]; then
    export TEXINPUTS=".:~/latex/:"
fi

Cách tốt hơn và chắc chắn làm việc là như sau.
  1. Tạo thư mục ~/texmf/tex/latex
  2. Copy các latex styles (e.g. breakurl, fancyvrb…) vào trong đó. Các styles này có thể download từ CTAN. Mỗi style có thể là 1 thư mục riêng để  giúp chúng độc lập nhau
  3. Di chuyển vào thư mục ~/texmf/tex/latex, tại đó type: texhash .
  4. Thành công
NOTE: Một số tiện ích hữu hiệu khác là kpsepath, kpsewhich, texconfig
e.g. texconfig conf

References:

  1. http://www.gemberdesign.com/2009/10/22/latex-and-bibtex-search-path/
  2. http://tug.ctan.org/tex-archive/macros/latex/contrib/breakurl/

Các lỗi khi biên dịch

Các lỗi gặp phải trong quá trình biên dịch

LaTeX Warning: Command \r invalid in math mode on input line xx

Tìm các file có \AA nằm trong phần math mode, sửa lại thành \text{\AA} hoặc đưa \AA ra khỏi math mode.

References:

  1. http://www.latex-community.org/forum/viewtopic.php?f=5&t=1893
  2. http://www.latex-community.org/forum/

ERROR: Argument of \hc@@caption has an extra }

Giải pháp đơn giản là chèn thêm cậu lệnh an toàn \protect vào ngay phía trước. References:
  1. http://www.tex.ac.uk/cgi-bin/texfaq2html?label=extrabrace
  2. http://www.tex.ac.uk/cgi-bin/texfaq2html?label=ftnsect
  3. http://www.gemberdesign.com/2009/10/22/latex-and-bibtex-search-path/
Advertisements

Written by vietnamen

Tháng Tư 29, 2009 at 9:31 chiều

0install – run without root

leave a comment »

zero-install

Run a program (.deb package) without installation.

Tham khảo:

  1. http://0install.net/
  2. http://wahjava.wordpress.com/2007/01/25/0install-rocks/

Written by vietnamen

Tháng Tư 27, 2009 at 11:15 chiều

shell script

leave a comment »

Trước tiên, mình xin giới thiệu sơ qua về shell. Cũng như DOS của Windows, Linux-based cũng có môi trường riêng cho phép gõ các dòng lệnh, nhưng mạnh hơn rất nhiều so với DOS. Môi trường đó gọi là shell.

Có nhiều loại shell: bash shell (bash), c-shell (csh), bourne-shell (sh)… Trong khả năng hiểu biết của người viết, cũng nhằm mục đích phục vụ cho công việc cá nhân. Chỉ đề cập đến bash shell.

Open any filetype

– Write a shell script with name open

sudo gedit $HOME/bin/open

#!/bin/bash
# $# = number of argument
# $0 = name of the script
if [ $# -lt 1 ]; then
  echo "USAGE: $0 <filename> \n";
  echo "Open anyfile";
  exit;
fi

echo "Xin chao"

# $1 = string of the first argument
if [ -f $1 ]; then
case $1 in
 *.pdf)
   pdfopen --file $1;;
 *.tm)
   texmacs $1 & ;;
esac
fi

exit

Check the finish of a process

Khi bạn chạy background một chương trình mà thời gian dừng không biết trước, thời gian thực thi lại khá dài. Để kiểm tra thời gian chạy của chương trình đó, một script nhỏ có thể được dùng để kiểm tra.

sudo nano check_runtime.sh

#!/bin/bash
# suppose the name of the tool is ssake
# the script check every 2 minutes
while ps -aux | grep ssake | grep -v grep
do 
  sleep 2m
done
echo "Finish ssake"
date > time_complete_ssake.txt

Languages

Arithmetic operator

-lt  (less than)
-gt (greater than)
-ne (not equal)

Logical operators

-o  (or)

Statements

Mỗi lệnh trên 1 hàng, nếu không phải ngăn cách bằng dấu ;

Select statement

if [  ... ] ; then        # phải có khoảng trắng trước và sau mỗi [ hay ]
   ...
fi

References:

  1. http://docsrv.sco.com:507/en/OSUserG/_Passing_to_shell_script.html
  2. http://www.hsrl.rutgers.edu/ug/shell_help.html
  3. http://www.linux.com/feature/155903
  4. http://www.injunea.demon.co.uk/pages/page205.htm

References:

  1. http://en.wikipedia.org/wiki/Unix_shell

Written by vietnamen

Tháng Tư 25, 2009 at 5:01 chiều

Xterm

with 2 comments

Xem shell-script, Xmonad.

Gnome-terminal là CLI (command-line interface) mặc định của Gnome. Bài viết này nhằm nói về Xterm – một option khác cho CLI. Câu trả lời cho “tại sao dùng Xterm?”  là “nó rất gọn nhẹ, chiếm chưa tới 1MB bộ nhớ, so với 3MB của Gnome-terminal và 8MB của Konsole.

Tuy nhiên, cấu hình mặc định của Xterm rất khó nhìn. Ta cần chỉnh sửa nó.

Keep environment variables

Để đảm bảo các environment variables và các thiết lập khác trong ~/.bashrc không mất đi trong Xterm, thêm vào dòng lệnh

source ~/.bashrc

vào trong file ~/.bash_profile

Edit the configuration file in ~/.Xsessions

File cấu hình của Xterm là ~/.Xsessions

! this are Xresources to make xterm look good
! put into ~/.Xresources
! after changing contents, run xrdb -merge .Xresources
! gentoo has a bug so that it doesnt read it when X starts,$
! command to /etc/xfce4/xinitrc (top) and be happy.

!xterm*background:  Black
!xterm*foreground:  Grey
xterm*font:     -Misc-Fixed-Medium-R-Normal--20-200-75-75-C$
!xterm*font:        -misc-fixed-medium-r-normal--18-*-*-*-*$
!xterm*iconPixmap: ...
xterm*iconPixmap:       /usr/share/pixmaps/gnome-gemvt.xbm
xterm*iconMask:         /usr/share/pixmaps/gnome-gemvt-mask$
!XTerm*iconName: terminal
!Mwm*xterm*iconImage: /home/a/a1111aa/xterm.icon
XTerm*loginShell: true
XTerm*foreground: gray90
XTerm*background: black
XTerm*cursorColor: rgb:00/80/00
XTerm*borderColor: white
XTerm*scrollColor: black
XTerm*visualBell: true
XTerm*saveLines: 1000
!! XTerm.VT100.allowSendEvents: True
XTerm*allowSendEvents: True
XTerm*sessionMgt: false
!XTerm*eightBitInput:  false
!XTerm*metaSendsEscape: true
!XTerm*internalBorder:  10
!XTerm*highlightSelection:  true
!XTerm*VT100*colorBDMode:  on
!XTerm*VT100*colorBD:  blue
!XTerm.VT100.eightBitOutput:  true
!XTerm.VT100.titeInhibit:  false
XTerm*color0: black
XTerm*color1: red3
XTerm*color2: green3
XTerm*color3: yellow3
XTerm*color4: DodgerBlue1
XTerm*color5: magenta3
XTerm*color6: cyan3
XTerm*color7: gray90
XTerm*color8: gray50
XTerm*color9: red
XTerm*color10: green
XTerm*color11: yellow
XTerm*color12: blue
XTerm*color13: magenta
XTerm*color14: cyan
XTerm*color15: white
XTerm*colorUL: yellow
XTerm*colorBD: white
!XTerm*mainMenu*backgroundPixmap:     gradient:vertical?dim$
!XTerm*mainMenu*foreground:          white
!XTerm*vtMenu*backgroundPixmap:       gradient:vertical?dim$
!XTerm*vtMenu*foreground:             white
!XTerm*fontMenu*backgroundPixmap:     gradient:vertical?dim$
!XTerm*fontMenu*foreground:           white
!XTerm*tekMenu*backgroundPixmap:      gradient:vertical?dim$
!XTerm*tekMenu*foreground:            white
!XTerm Profiles (idea from dag wieers)
XTerm*rightScrollBar: true

Sau khi chỉnh sửa theo ý thích, hits:

xrdb -merge .Xresources

Một cách để tăng/giảm font-size tức thời là giữ  Ctrl + right_mouse_click và chọn Tiny, Small, Medium, Large, Huge.

References:

  1. http://www.fak3r.com/2006/02/23/howto-usable-xterm-configuration/
  2. http://linuxhelp.blogspot.com/2005/10/configuring-xterm-in-linux.html

Written by vietnamen

Tháng Tư 25, 2009 at 4:09 chiều

Posted in Living better with Ubuntu, Tin học

Tagged with

Hiển thị màu cho codes (C, Fortran…) trong tài liệu

leave a comment »

Code highlighting là một chức năng rất cần thiết của các Code-Editor để giúp programmer đọc và viết các đoạn code. Khi soạn thảo một tài liệu, mà trong đó có chèn các đoạn code lập trình, chức năng này hẳn nhiên là cũng rất cần thiết. Vậy, trong LaTeX, làm sao để nó nhận biệt các lệnh lập trình, để phân tách ra khỏi các mã lệnh trong soạn thảo văn bản LaTeX. Sau đây là tổng hợp một vài cách dùng.

Verbatim environment

LaTeX mặc định cho phép bạn khai báo một đoạn text độc lập, có thể chứa các kí hiệu đặc biệt trong LaTeX, là “verbatim” để báo hiệu rằng LaTeX xem các kí hiệu, text bên trong là plain-text. Muốn vậy, đoạn text đó phải nằm giữa \begin{verbatim}\end{verbatim}.

\begin{verbatim}
    <html>
       <head>
           <title>Hello</title>
       </head>
       <body>Hello</body>
    </html>
\end{verbatim}

Nếu muồn chèn những đoạn plain-text vào giữa các text khác (cái này gọi là inline text) thì ta có thể dùng \verb| text in here |

Tuy nhiên, chức năng hiển thị màu vẫn chưa có ở đây.

Fancyvrb package

Một gói khác là fancyvrb với <Verbatim> cho phép chỉnh fontsize và một số thiết lập khác

\begin{Verbatim}[fontsize=\small]
  Text here
\end{Verbatim}

Listing package

Một lựa chọn khác, đa năng hơn, đó là dùng “listing” package. Nó hỗ trợ syntax-highlightting cho rất nhiều ngôn ngữ.

\documentclass{article}
\usepackage{listings}

\begin{document}
\begin{lstlisting}[language=html]
<html>
    <head>
        <title>Hello</title>
    </head>
    <body>Hello</body>
</html>
\end{lstlisting}
\end{document}

Để chèn inline text, ta dùng \lstinline{ code here }
Để thiết lập chung cho toàn văn bản, ta dùng lệnh sau ngay sau \begin{document}
\lstset{language={[77]Fortran}, numbers=left, numberstyle=\tiny,
  stepnumber = 5, numbersep=5pt, keywordstyle=\color{blue}}
  • numbers = vị trí hiển thị line numbers để dễ nhìn code
  • numberstyle = chọn kích cỡ của line numbers
  • stepnumber = số dòng cách nhau cần có line number
  • keywordstyle = tô màu keyword
Tuy nhiên, một số ngôn ngữ vẫn không được hỗ trợ như XML. Đọc thêm manual để có đầy đủ hướng dẫn.

LGrind package

Ta có thể dùng  lgrind package để cung cấp environment và macros, lgrindef chứa thông tin qui định để phân biệt keywords và comment, comment và strings…

Download and copy the file lgrind.sty, lgrindef in here to the folder where LaTeX file locate.

You can

  • embed the code file into LaTeX file with \lagrind or \lgrindfile command: \lgrindfile{filename}, \lagrind[htbp]{filename}{caption}{label}
  • mark group of lines as programming code: %(    code here  )%            or          @  short_hand code here @
  • produce indented code on an own line: %[   code here %]
  • for long code, you can specifically insert page breaks  using %*
  • insert your own code with %=

NOTICE: a float text cannot longer than 1 page.

\documentclass{article}
\usepackage[options]{lgrind}

\begin{document}
The keyword @ if @ in C/C++ means a condition. Now, we look at the following code
%(
if (x == 10) then x = x + 1;
)%
\end{document}

Các options có thể dùng là

  1. procnames:
  2. noprocindex
  3. fussy: let LaTeX print all overfull hboxes
  4. norules: suppress the surrounding rules
  5. nolineno: don’t print line numbers
  6. lineno5 : prints line number every 5 lines (default is 10)
  7. leftno : print line number in the left margin (default is right)

Languages supported by lgrind

Ada LATEXa RATFOR
Asm LDL RLaBb
Asm68 Lex Russell
BASICa Linda SASc
Batchb Lisp (Emacs) Schemed
C MASMa sh
C++ MATLABa SICStusb
csh MLd src
FORTRAN Mercury SQL
Gnuplote model Tcl/Tkf
Icon Modula2 VisualBasica
IDLg Pascal VMSasm
ISP PERL yacc
Java PostScript
Kimwitu++ PROLOG

References:

  1. http://stackoverflow.com/questions/300521/latex-package-to-do-syntax-highlighting-of-code-in-various-languages
  2. http://www.ctan.org/tex-archive/macros/latex/contrib/listings/
  3. http://www.ctan.org/tex-archive/nonfree/support/lgrind/
  4. http://www.faqs.org/faqs/lisp-faq/part6/section-4.html

MatLab code

Để hiển thị MatLab code được hoàn chỉnh, bạn down file mcode.sty do Florian Knorr biên soạn và cho phép dùng mở, lưu vào thư mục của project.

Tiếp đến, bạn thêm dòng lệnh để sử dụng file này

\usepackage[options]{mcode}

với options có thể là các tuỳ chọn sau:

bw : nếu muốn keyword được bôi đậm, nghiêng, và tô màu xám (phù hợp khi muốn in ra văn bản dạng text)
numbered : nếu muốn đánh số dòng code
framed : nếu muốn có khung bao quanh
final : khi mà tuỳ chọn  draft đã được thiết lập toàn cục, mọi dòng code sẽ không được in ra, để giải quyết, bạn dùng tuỳ chọn final.

References:

  1. http://my.opera.com/locksley90/blog/2008/02/25/how-to-include-matlab-source-code-in-a-latex-document

Written by vietnamen

Tháng Tư 14, 2009 at 10:39 sáng

Note-taking tools

leave a comment »

Khi mình là người suốt ngày quanh quẩn bên chiếc laptop hay PC. Một công cụ giúp taking-note lại những ý tưởng, những tác vụ thường dùng là điều rất thiết yếu. Vì thế, mình đã tham khảo một số bài viết để giới thiệu các ứng dụng như thế.

Stickynotes

Đơn giản nhất là Sticky notes trong gnome-applets. Nó chỉ cho phép take notes lại và không có lưu trữ, không có tùy chọn format, chỉ hỗ trợ text. Phù hợp với những gì tạm thời.

Tomboy

Ứng dụng mặc định của GNOME, chưa dùng nhiều nhưng theo các bài viết thì cũng rất mạnh (format theo đậm, nghiêng, tô màu, cỡ font, …) và một số add-ons đi kèm.

Knotes

Nhìn cái tên thì cũng biết là ứng dụng viết cho KDE, nhưng GNOME thì cũng dùng được thôi. Chức năng cũng đơn giản. cụ thể thế nào thì chưa dùng thử.

BasKet

Và đây là một ứng dụng khác của KDE, nhưng rất mạnh. Chỉ có điều cài nó trong GNOME cũng khá lớn (147MB). Và giờ mình sẽ cài đặt sử dụng cái này. Theo các bài viết, BasKet có khả năng to lớn, vượt ngoài mong đợi của một note-taking tool. Các chức năng sẽ cần thiết mà nó support là

  1. multi-column notes
  2. tags, custom tags
  3. shortcuts
  4. import note from text files, Tomboy, KNotes
  5. insert images, links, launchers
  6. back-up in a single, compressed file.
  7. export to HTML.

Cài đặt:

sudo apt-get install basket

References:

  1. http://tuxarena.blogspot.com/2008/10/3-notes-taking-applications-for-linux.html
  2. http://www.fsdaily.com/EndUser/3_Notes_Taking_Applications_for_Linux_BasKet_Tomboy_and_KNotes/related_links

Written by vietnamen

Tháng Tư 5, 2009 at 11:08 sáng