Ms word 在MS Word中格式化Epub的PHP代码

Ms word 在MS Word中格式化Epub的PHP代码,ms-word,epub,Ms Word,Epub,我正在尝试格式化一本700多页的书中的PHP代码部分,以便进行Epub转换。如果我在代码行末尾使用软返回,它们就会被吃掉。如果我使用硬返回(使每一行成为一个段落),我要么在行之间获得了太多的空间,要么在代码部分前后没有足够的空间。如果我在代码段前后添加一个空行,它就会被吃掉 书中有数千行代码。是否有一些方法可以在不手动编辑html文件的情况下处理此问题?这些代码部分是否有一些通用格式,比如用PHP标记包装 如果它们是PHP标记,您可以使用它,它将用一个: function fixPHPcode(

我正在尝试格式化一本700多页的书中的PHP代码部分,以便进行Epub转换。如果我在代码行末尾使用软返回,它们就会被吃掉。如果我使用硬返回(使每一行成为一个段落),我要么在行之间获得了太多的空间,要么在代码部分前后没有足够的空间。如果我在代码段前后添加一个空行,它就会被吃掉


书中有数千行代码。是否有一些方法可以在不手动编辑html文件的情况下处理此问题?

这些代码部分是否有一些通用格式,比如用PHP标记包装

如果它们是PHP标记,您可以使用它,它将用一个:

function fixPHPcode($matches)
{
  return '<p class="php_code">' . $matches[0] . '</p>';
}
$data = preg_replace_callback('/<\?php(.|\s)+?\?>/i', 'fixPHPcode', $data);
函数fixphcode($matches)
{
返回“

”。$matches[0]”。

; } $data=preg_replace_回调('//i','fixpcode',$data);
我确实尝试了一些相当复杂的正则表达式转换,但我发现了一种更简单的方法,实际上效果相当好

秘密在于创建一个基于Word“HTML预格式化”样式的样式,或者如果没有该样式,则创建一个基于普通样式的样式,指定Arial Unicode MS或Courier New作为字体,无需校对,左对齐

用空格缩进,并在每行末尾使用软回车(shift-enter)


Calibre将生产可接受的Epub和Mobi版本。Courier对于代码来说是一种垃圾字体,但至少它是单间距的,因此缩进会排成一行,人们习惯于将其视为代码字体。

遗憾的是,不是。我可以通过Word中的样式找到它们,但没有PHP的开始和结束标记。在一些测试中,我发现我也丢失了代码中的缩进。所有行都是左对齐的。如果提供HTML示例,则可以创建一个正则表达式来匹配。