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
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
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;
}
According to the official spec có khô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ó.
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 rest2html
và Nhâ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.
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
@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
Không thông báo. Lấy làm tiếc. – Tshepang
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.
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