2012-03-16 14 views
17

Công cụ tài liệu Sphinx có cung cấp các chủ đề PDF khác nhau như nó cung cấp các chủ đề HTML khác nhau không?Chủ đề PDF của Nhân sư

Tôi đã giải quyết vấn đề nhưng không thể tìm thấy câu trả lời, điều này khiến tôi tin rằng câu trả lời là 'không'. Tuy nhiên, tôi nghĩ tôi sẽ hỏi ở đây.

Cảm ơn.

Trả lời

20

Thứ nhất, Sphinx không tạo ra PDF bằng cách riêng của mình, mặc dù có hai phương pháp chung để có được từ các tập tin nguồn Sphinx để đầu ra PDF:

  1. Sử dụng xây dựng cao su, và sau đó một công cụ riêng biệt như latex2pdf để tạo ra sản lượng PDF
  2. sử dụng các plugin Sphinx từ rst2pdf project

đó được cho biết có rất nhiều tiềm năng để tùy chỉnh phong cách của đầu ra PDF bằng một trong hai phương pháp.

  1. Khi sử dụng phương pháp latex-> pdf, bạn có thể tùy chỉnh đầu ra mủ bằng cách sử dụng một số tùy chọn trong tệp cấu hình nhân sư của bạn. Xem here. Phương pháp này hơi kém thuận tiện hơn so với các chủ đề HTML mà Sphinx sử dụng cho việc tạo HTML, mặc dù (IMO).
  2. Khi sử dụng rst2pdf, bạn có thể xác định biểu định kiểu của riêng mình, được mô tả chi tiết hơn trong manual (xem dưới tiêu đề "Kiểu"). rst2pdf bao gồm một số bảng định kiểu, có thể được kết hợp với nhiều kết quả khác nhau. Và tất nhiên, bạn cũng có thể sửa đổi chúng hoặc tạo của riêng bạn (chúng chỉ là các tệp JSON). Các bảng định kiểu này cũng hỗ trợ một kiểu thừa kế, vì vậy hành động giống như các chủ đề HTML Sphinx hơn so với phương thức trước đó.
2

Không có chủ đề được xác định trước cho đầu ra PDF cho Nhân sư. Nhưng LaTex cung cấp một tập hợp các tùy chọn phong phú để tạo kiểu cho tài liệu. Vấn đề của tôi là tìm ra cách thích hợp để tạo kiểu cho tài liệu bằng nhân sư. Đây là cách làm việc cho tôi:

Trước tiên hãy xem conf.py. Ở đó bạn sẽ tìm thấy một tùy chọn latex_elements. Với tùy chọn này, bạn có thể thêm các lệnh LaTex của riêng bạn vào đầu ra. Ví dụ:

latex_elements = { 
# The paper size ('letterpaper' or 'a4paper'). 
'papersize': 'a4paper', 

# The font size ('10pt', '11pt' or '12pt'). 
'pointsize': '12pt', 

'fontpkg': r""" 
\PassOptionsToPackage{bookmarksnumbered}{hyperref} 

""", 

# Additional stuff for the LaTeX preamble. 
'preamble': r""" 
\usepackage{setspace} 
""", 

'footer': r""" 
""", 

'maketitle': r''' 
\pagenumbering{arabic} 
''', 
} 

Có một vài điểm quan trọng cần biết.

  • Sử dụng r""" để tránh xung đột với python
  • Mặc dù preamble sẽ là điểm phải để thêm \usepackage bạn có thể có những xung đột với các thiết lập mặc định Sphinx. Hãy xem fontpkg trong ví dụ. Đây là lần đầu tiên bao gồm trong tài liệu đầu ra .tex. Nếu bạn phải thiết lập các tùy chọn cho các gói mặc định, hãy thực hiện nó ở đây.
  • maketitle cho phép bạn xác định trang tiêu đề của riêng bạn. Xem một số tài liệu về latex. Tôi đặt \pagenumbering ở đó để có mục lục với số arabic, vì vậy nội dung thực bắt đầu trên trang "1".

Với kiến ​​thức đúng về lệnh Latex, bạn có thể làm tốt chúng bằng một vài lệnh. Một nguồn tốt để tìm trợ giúp là https://tex.stackexchange.com/, nơi các sự cố phổ biến nhất có giải pháp. Nhưng việc tìm ra các lệnh Latex phù hợp là khó khăn hơn nhiều so với việc chọn một chủ đề được thực hiện cho HTML.

Có thể hữu ích khi xem Tex-Output theo ./_build. Ở đó bạn có thể thấy, cách các số latex_elements -options được bao gồm trong tài liệu.