This page is READ-ONLY. It is generated from the old site.
All timestamps are relative to 2013 (when this page is generated).
If you are looking for TeX support, please go to VietTUG.org

Problem #722

Làm sao để tạo định dạng - 1 bên là đoạn code C- 1 bên là kết quả của C

Added by rivaldinho over 2 years ago. Updated almost 2 years ago.

Status: Closed Start Date: 11-08-2010
Priority: Normal Due date:
Assigned to: icy % Done:

100%

Category: định dạng: layout, header,...
Target version: 2010_help
Resolution: Fixed
Votes: 2/2

Description

Mình đọc vài sách về TeX và nhận thấy hầu hết các tác giả đều sử dụng định dạng:

đoạn code - (cột phải) kết quả của đoạn code.

Nhưng vẫn tiếp tục viết text tiếp như là định dạng một cột (onecolumn). Để biểu diễn rõ ý, mình có đính kèm theo một file ở dưới (được chụp từ The Not So Short Introduction).

Làm sao để tạo định dạng như vừa đề cập ? Cám ơn !

Illustration.jpg (61 kB) rivaldinho, 11-08-2010 06:22

History

Updated by over 2 years ago

  • Status changed from New to Assigned
  • % Done changed from 0 to 50
  • Resolution deleted (Fixed)

rivaldinho wrote:

Mình đọc vài sách về TeX và nhận thấy hầu hết các tác giả đều sử dụng định dạng:

đoạn code - (cột phải) kết quả của đoạn code.

Mình không nhớ có gói nào hỗ trợ việc này không. Cách đơn giản mình làm là dùng môi trường minipage (có thể định nghĩa các môi trường rút gọn). Ví dụ

\begin{minipage}{0.4\textlength}
   % nội dung cột đầu tiên vào đây
\end{minipage}
%
\begin{minipage}{0.4\textlength}
   % nội dung cột thứ hai vào đây
\end{minipage}

Còn làm thế nào để một bên là mã TeX, bên kia là kết quả mã TeX? Đó là một câu hỏi khó. Cách giải quyết là dùng verbatim input và một số gói trong họ fancy cho phép xử lý mã nguồn và kết quả của mã nguồn. Bạn có thể đọc trong chính mã nguồn của The Not So Short Introduction để biết thêm chi tiết. Mình đã từng làm nhưng không nhớ rõ cách. Phải có chút thời gian lục tìm lại.

Updated by rivaldinho over 2 years ago

  • File lshort-4.31.src.tar.gz added
  • Votes: 2/2

Không biết mọi người đã nghĩ ra phương pháp chưa ? Nhưng mình nghĩ đây đúng là một vấn đề khó và rất có ích vì nếu mình có thể làm được định dạng như vậy thì việc viết các báo cáo cũng như tài liệu dài (sách). Khi đó mình có thể dùng layout này để minh họa ví dụ và vì nó ở trên cùng một trang, chính xác hơn là ở cùng một khu vực trên giấy, minh họa sẽ trở nên dễ đọc và dễ theo dõi vì mình so sánh được codeoutput.

Vì đã khá lâu mà không thấy hồi âm, mình đã liên hệ trực tiếp với tác giả của sách Tobias Oetiker và nhận được câu trả lời là ông ấy có lập trình thêm một tí và source code được để trên trang. http://tobi.oetiker.ch/latex/. Tuy nhiên cũng khá khó theo dõi vì tác giả chỉ phản hồi cho mình vài dòng như sau:

I do this with the verbatim package and a little code of my own you can download the source of the book from tobi.oetiker.ch/latex have a look at the lshort.sty file.

còn lại do mình phải mò mẫm. Cho nên mình nghĩ vấn đề này nên được chuyển thành
Nghiền ngẫm source code của Tobias Oetiker.
Mọi người xem qua và góp ý học hỏi.

PS: Mình đính kèm file source code được download từ http://tobi.oetiker.ch/latex/

Updated by over 2 years ago

    Cảm ơn bạn đã chia sẻ. Bữa ni tranh thủ lúc rảnh mình sẽ lục tìm lại cách mình đã làm. Có rất nhiều cách giải quyết bài toàn bạn nói. Có cách buggy nhưng dùng được. Có cách chuẩn nhưng lại rối. Bla bla bla :)

    Updated by rivaldinho over 2 years ago

      Tuần này mình khá bận vì phải đi thi cử này nọ (không quan trọng nhưng thi ra tiền nên không muốn bỏ). Hết tuần này mình sẽ cố gắng tham khảo source code của Tobias Oetiker và thảo ra một vài dòng về cách giải quyết vấn đề. Hi vọng Kỳ Anh khoan vội đóng vấn đề này. Cám ơn ! :D

      Updated by rivaldinho over 2 years ago

        rivaldinho wrote:

        Tuần này mình khá bận vì phải đi thi cử này nọ (không quan trọng nhưng thi ra tiền nên không muốn bỏ).

        Mới vừa thi rớt về cho nên lao đầu vào coi source code của Tobias Oetiker thì phát hiện ra "quá khó xem" hơn mình nghĩ. Thậm chí tới giờ mình chưa chạy được cái file chính lshort.tex. Lý do chính là thiếu quá nhiều gói *.sty. Việc bổ sung này tương đối mất thời gian vì phải copypaste quá nhiều file trên CTAN. Ngay cả khi, cung cấp đủ *.sty, vẫn đọc không hiểu cái môi trường example (chính là môi trường mà tác giả sử dụng cho định dạng như đề cập ở đầu vấn đề) tác giả khai báo ở đâu. Đúng là _đau đầu.

        Ngoài ra mình góp ý nhỏ. Có lẽ đây chỉ là nhẫm lẫn của Z hoặc của chính mình.

        \begin{minipage}{0.4\textlength}
           % nội dung cột đầu tiên vào đây
        \end{minipage}
        

        Hình như \textlength nên được sửa lại thành \textwidth.

        Để có thời gian xem cách sử dụng fancy bundle như Z gợi ý xem sao. Chắc phải mất một thời gian.

        Updated by over 2 years ago

          rivaldinho wrote:

          Mới vừa thi rớt về cho nên lao đầu vào coi source code của Tobias Oetiker

          Thi cái gì mà có tiền thế :D Nói mình đi với. Rớt cũng được :P

          thì phát hiện ra "quá khó xem" hơn mình nghĩ. Thậm chí tới giờ mình chưa chạy được cái file chính lshort.tex. Lý do chính là thiếu quá nhiều gói *.sty. Việc bổ sung này tương đối mất thời gian vì phải copypaste quá nhiều file trên CTAN.

          Dùng TeXLive được không?

          Ngay cả khi, cung cấp đủ *.sty, vẫn đọc không hiểu cái môi trường example (chính là môi trường mà tác giả sử dụng cho định dạng như đề cập ở đầu vấn đề) tác giả khai báo ở đâu. Đúng là _đau đầu.

          Để mình coi giúp cho :)

          Cách làm của mình hồi xưa là thế này: định nghĩa môi trường foobar, mà nội dung của môi trường này sẽ được ghi vào tập tin bên ngoài, rồi sau đó nạp ngược trở lại. Do cách làm này quá phức tạp và khó điều khiển (mình viết bằng TeX chay), nên có lẽ mình không nên giới thiệu ở đây.

          Hình như \textlength nên được sửa lại thành \textwidth.

          Cảm ơn bạn. Đúng là \textwidth :)

          Updated by rivaldinho over 2 years ago

          • Votes: 1/1

          Về cơ bản mình thấy ông tác giả có một số hàm cũng tạm hay và mình nghĩ là có ích khi cho việc viết tài liệu liên quan đến việc phải chèn code. Mình liệt kê ra đây theo những gì mình thu thập được. Mọi người theo dõi và góp ý và chỉnh sửa nếu cần thiết.

          • command \verb:
            Hàm này để viết một đoạn nhỏ (phrase in english) dưới font Roman (không biết đúng hông ?). Về khai báo của command này thì tìm mãi chưa ra. Nhưng mình nghĩ cũng không quá khó để định nghĩa theo ý đồ tác giả. Ví dụ:
            \verb|\begin{document}|
            

            cho ra --output--> \begin{document} (in Roman font). Chú ý: có 2 dấu | ở ngay sau lệnh và vị trí kết thúc lệnh.
          • environment lscommand:
            Môi trường này cho ta viết mấy cái lệnh theo ý mình rồi đóng khung một 'đám' lại. Code được cho bởi
            % Typesetting Commands
            %
            \newenvironment{lscommand}%
                {\nopagebreak\par\small\addvspace{3.2ex plus 0.8ex minus 0.2ex}%
                 \vskip -\parskip
                 \noindent%
                 \begin{tabular}{|l|}\hline\rule{0pt}{1em}\ignorespaces}%
                {\\\hline\end{tabular}\par\nopagebreak\addvspace{3.2ex plus 0.8ex
                    minus 0.2ex}%
                 \vskip -\parskip}
            %
            
          • environment code
            Môi trường này cho trích dẫn một đoạn code vào trong tài liệu. Khai báo được cho bởi (nói thẳng ra là xài environment quote):
            % Type setting Code Fragments
            %
            \newenvironment{code}{\begin{quote}}{\end{quote}}
            %
            

          Thi cái gì mà có tiền thế :D Nói mình đi với. Rớt cũng được :P

          Thi hùng biện anh văn. Tui qua vòng 1 mà rớt vòng 2. Được từ điển với lại một khóa học anh văn tổng quát miễn phí ở VATC.

          Updated by over 2 years ago

          • File deleted (lshort-4.31.src.tar.gz)

          Updated by icy almost 2 years ago

          • Status changed from Assigned to Closed
          • Assigned to changed from 3 to icy
          • % Done changed from 50 to 100
          • Resolution set to Fixed