2011-06-29 25 views
39

Có thể tấn công văn bản qua trong Văn bản được cấu trúc lại không?ReST strikethrough

Cái gì đó ví dụ ám như một thẻ <strike> khi chuyển đổi sang HTML, như: ReSTructuredText

+0

Khi bạn sử dụng Nhân sư, điều này có thể hữu ích: http://stackoverflow.com/a/24932178/2923406 – Rolf

Trả lời

39

Tôi đã kiểm tra các tài liệu tốt hơn, theo đề nghị của Ville Säävuori, và tôi quyết định thêm gạch ngang như thế này:

.. role:: strike 
    :class: strike 

Trong tài liệu, điều này có thể được áp dụng như sau:

:strike:`This text is crossed out` 

Sau đó, trong tập tin css Tôi có một mục nhập:

.strike { 
    text-decoration: line-through; 
} 
10

According to the official speckhông chỉ cho gạch đánh dấu trong phần còn lại.

Tuy nhiên, nếu môi trường cho phép: raw: role hoặc bạn có thể viết vai trò của riêng mình, thì bạn có thể viết một plugin tùy chỉnh cho nó.

11

Có i s ít nhất ba cách để làm việc đó:

.. role:: strike 

An example of :strike:`strike through text`. 

.. container:: strike 

    Here the full block of test is striked through. 

An undecorated paragraph. 

.. class:: strike 

This paragraph too is is striked through. 

.. admonition:: cancelled 
    :class: strike 

I strike through cancelled text. 

Sau khi áp dụng rst2html bạn nhận được:

<p>An example of <span class="strike">strike through text</span>.</p> 
<div class="strike container"> 
Here the full block of test is striked through.</div> 
<p>An undecorated paragraph.</p> 
<p class="strike">This paragraph too is is striked through.</p> 
<div class="strike admonition"> 
<p class="first admonition-title">cancelled</p> 
<p class="last">I strike through cancelled text.</p> 

Bạn sử dụng chúng với một phong cách

.strike { 
    text-decoration: line-through; 
} 

Ở đây tôi đã đưa ra những admonition chỉ thị làm ví dụ nhưng bất kỳ chỉ thị nào cho phép tùy chọn :class: sẽ làm.

Vì nó tạo ra một span chỉ thị role là chỉ có cho phép áp dụng kiểu của bạn cho một phần của đoạn văn.

Nó là không cần thiết để thêm một lớp strike đến một chỉ thị cũng có tên strike, như đề nghị Gozzilli, vì tên chỉ là lớp mặc định cho sản lượng html.

Tôi đã kiểm tra cả hai cú pháp này với rest2htmlNhân sư. Nhưng trong khi mọi thứ hoạt động như mong đợi với rest2html chỉ số class không thành công với Nhân sư. Bạn cần phải thay thế nó với

.. rst-class:: strike 

This paragraph too is is striked through. 

Đây là chỉ ghi trong một nhỏ footnote of Sphinx reSt Primer.

+0

Bạn chắc chắn về liên kết đó. Tôi không giống như nó đi nơi bạn dự định. – Tshepang

+2

@Tshepang, tôi đã kiểm tra, liên kết kết thúc trên chú thích cuối trang tiểu bang: _Khi tên miền mặc định chứa chỉ thị lớp, chỉ thị này sẽ bị che khuất. Do đó, Sphinx tái xuất khẩu nó như là rst-class._ – marcz

+0

Không thông báo. Lấy làm tiếc. – Tshepang

4

Tôi thấy các câu trả lời khác rất hữu ích. Tôi không quen thuộc lắm với Sphinx nhưng tôi đang sử dụng nó cho một dự án.Tôi cũng muốn khả năng tấn công và làm cho nó hoạt động dựa trên các câu trả lời trước đó. Để rõ ràng, tôi đã thêm vai trò gạch ngang của mình như gozzilli được đề cập nhưng tôi đã lưu nó trong conf.py của mình bằng biến rst_prolog như được thảo luận trong luồng tràn ngăn xếp here. Điều này có nghĩa rằng vai trò này có sẵn cho tất cả các tệp còn lại của bạn.

Sau đó, tôi đã mở rộng mẫu html cơ sở như được mô tả ở trên bằng cách tạo layout.html trong phạm vi _templates bên trong thư mục nguồn của tôi. Nội dung của tệp này là:

{% extends "!layout.html" %} 
{% set css_files = css_files + ["_static/myStyle.css"] %} 

Điều này về cơ bản bao gồm tệp css tùy chỉnh cho tất cả tài liệu html mặc định được tạo của bạn.

Cuối cùng, trong thư mục _static của tôi trong thư mục nguồn của tôi, tôi bao gồm các tập tin myStyle.css chứa:

.strike { 
    text-decoration: line-through; 
} 

Những câu trả lời khác đã được cung cấp.

Tôi chỉ viết câu trả lời này vì không rõ ràng đối với tôi với trải nghiệm Sphinx giới hạn của tôi mà tệp cần chỉnh sửa.