当前位置: 首页 > news >正文

扬州市建设局网站wordpress多重筛选

扬州市建设局网站,wordpress多重筛选,php除了做网站还能做什么,网站锚文本与标签本文已加入专栏文章目录#xff0c;归入「进阶使用」文章系列。本文可以看作对这个发生于 2019 年 7 月中旬的 TeX-SX 上自问自答的展开说明。那个回答中避免了 python 的使用#xff0c;而是利用 zref 宏包把位置信息以文本形式在 pdf 中呈现#xff0c;好处是不用引入 pyt…本文已加入专栏文章目录归入「进阶使用」文章系列。本文可以看作对这个发生于 2019 年 7 月中旬的 TeX-SX 上自问自答的展开说明。那个回答中避免了 python 的使用而是利用 zref 宏包把位置信息以文本形式在 pdf 中呈现好处是不用引入 python坏处是如果写成文章需要额外介绍 zref 的使用。问题的引入fancyvrb 宏包提供了高度可配置的抄录环境功能大致上和 listings 相当。有些配置项提供了「跳出抄录环境回到一般 latex」的功能例如 commandchars。它接受一串三个符号组成的值分别代表命令开始、左侧分组、右侧分组实际可以归结到 catcode此处略过。直接看 fancyvrb 文档 Sec. 4.1.12 的例子文档截图中的第二个例子展示了一种使用方式利用 commandchars 为抄录环境的某一行增加标签label然后在正文中引用ref它来获得行号。特别地hyperref 包还会自动为行号添加超链接点击行号就能跳转到抄录环境中的对应行。上一段的最后一个分句只是描述了我们期望的行为实际的编译和测试结果不是这样的点击引用ref得到的行号后无法跳转到对应行。工具和示例准备除了靠手去点超链接然后根据阅读器跳转的位置来判断和分析还可以借助工具直接读取 PDF 文件里的超链接跳转位置。例如使用 Python 的 PyPDF2 库from PyPDF2 import PdfFileReaderfname xxx.pdf pdf PdfFileReader(fname) named_dests pdf.namedDestinations.items()print(Coordinates of named destinations) for k, v in named_dests:print(k, [v[/Left], v[/Top]])top None print(nVertical distances between labels of line numbers) for k, v in named_dests:if FancyVerbLine in k or lstnumber in k:curr v[/Top]if top is not None:print(k, float(top - curr) / 72 * 72.27, pt)top curr有关 PDF 格式的补充说明「超链接跳转位置」在 PDF 格式中称为 named destination每个 named destination 拥有一个全文档唯一的名称它的内容在本文中我们关心的是横纵坐标信息有时也关心它的目标页面它的使用是成为某个 annotation例如 hyperref 自动添加的的跳转目标有关上述 python 脚本的说明第一组 print输出文档内所有 named destinations 的名称和坐标第二组 print仅输出与 fancyvrb和 listings用于对照 有关的相邻 named destinations 的纵坐标差值同时使用以下 latex 示例文档注意示例中的 newpagenull 是特意添加的为的是保证 pdf 阅读器有跳转也就是把第一页往上翻的空间documentclass{article} usepackage{fancyvrb} usepackage{hyperref}% possible config appears herebegin{document} begin{Verbatim}[numbersleft, commandchars{}] firstlabel{vrb:1} secondlabel{vrb:2} thirdlabel{vrb:3} forthlabel{vrb:4} fifthlabel{vrb:5} sixthlabel{vrb:6} aend{Verbatim}ref{vrb:1}, ref{vrb:2}, ref{vrb:3}, ref{vrb:4}, ref{vrb:5}, and ref{vrb:6} newpagenull end{document}最后需要留意示例文档的编译方式如果使用 xelatex因为默认情况下 xdvipdfmx 会去掉未使用的 named destinations并简化所有 named destinations 的名称所以需要通过选项让 xdvipdfmx 不对 named destinations 自动优化。xelatex -no-pdf xxx xelatex -no-pdf xxx xdvipdfmx -C 0x0010 xxx如果使用 pdflatex 或 lualatex直接使用即可。不同引擎生成的 pdf 中named destination 的信息有微小差异。本文默认使用 xelatex。 初步尝试编译 latex 示例文档生成 pdf点击那六个超链接可以发现它们都跳转到同一位置。示例文档生成的 pdf执行 python 脚本读取这个 pdf 里的信息会获得如下输出Coordinates of named destinations Doc-Start [133.77, 667.2] page.1 [132.77, 705.06] page.2 [132.77, 705.06]Vertical distances between labels of line numbers似乎六个 label 根本没有生成六个不同的跳转目标连一个也没有生成。如果直接使用 xelatex xxx.tex生成的 pdf 里就只有一条记录Coordinates of named destinations 0 [133.77, 667.2]如果继续使用 PyPDF2 的功能去看第一页的所有 annotations 的跳转目标此处略去代码就可以完全确定六个 label 完全没有生成新跳转目标六个 ref 都跳转去了当前页的开始处具体位置是 page.1 跳转目标标记的、页面版心的左上角。以上是从 pdf 一侧进行的分析和探索。如果从 latex 一侧进行从相关宏包的源码入手则能了解到以下事实在 fancyvrb 内部负责递增行号的宏 FVrefstepcounter 的定义中重写了一遍 latex2e 中 refstepcounter 的原始定义刻意避免了直接使用 refstepcounter hyperref 重定义后的 refstepcounter 会在展开时插入新的跳转目的地 并把该目的地储存在 currentHref 中以供 label 在内部引用这则「事实」的展开介绍可能需要额外的一篇或多篇文章此处略过这样因为fancyvrb 在递增行号时没有使用 refstepcounter所以对应于新行号的跳转位置无法生成currentHref 得不到更新label 关联的就变成了上一次更新过的 currentHref 信息也即 hyperref 在每一页开头默认插入的跳转目标。第一步尝试很简单让 FVrefstepcounter 成为 refstepcounterletFVrefstepcounterrefstepcounter 继续尝试修改保存、编译 tex 文件、执行 python会发现问题没有完全解决。Coordinates of named destinations Doc-Start [133.77, 667.2] FancyVerbLine.1 [133.77, 667.2] FancyVerbLine.2 [133.77, 657.18] FancyVerbLine.3 [133.77, 657.18] FancyVerbLine.4 [133.77, 645.22] FancyVerbLine.5 [133.77, 633.22] FancyVerbLine.6 [133.77, 621.31] page.1 [132.77, 705.06] page.2 [132.77, 705.06]Vertical distances between labels of line numbers FancyVerbLine.2 10.057574999999998 pt FancyVerbLine.3 0.0 pt FancyVerbLine.4 12.004850000000001 pt FancyVerbLine.5 12.044999999999998 pt FancyVerbLine.6 11.954662499999998 pt从 python 脚本的输出可以看出虽然现在每个 label 都对应了不同的跳转目标但是目标之间的纵坐标差异并不一致。预期输出是每两个相邻目标在纵坐标上都相差 12pt对应 latex 中 baselineskip 储存的值也即行距实际得到的是line 2 和 line 1 只差了 10pt与字号有关与行距无关例如用 fontsize{10}{50}selectfont 修改行距后仍然是 10ptline 3 和 line 2 差 0pt后面的正常。推断FVrefstepcounter 展开的位置有问题。 根据对类似示例代码的手动展开见项目 muzimuzhi/latex-expansion 中以 fancyvrb 打头的文件判断纵坐标差异应该源于 fancyvrb 对抄录环境前三行的特殊处理可能是为了控制在环境中间换页的条件具体涉及命令 FVListProcessLine(i|ii|iii|iv)。这几个宏的具体作用限于时间和水平笔者还没能了解清楚。笔者采取了一个讨巧但可能带来其他未知问题的解决方案把 FVrefstepcounter具体是调用它的 FVStepLineNo 宏 的展开位置延迟到抄录行文本刚要输出之前以保证通过 refstepcounter 递增行号并插入新跳转目标时所处高度和抄录文本行一致。这样要做的修改就很简单把 FVStepLineNo 从原来的位置删掉再在一个新的位置插入。usepackage{etoolbox}% move FVStepLineNo into FVListProcessLine patchcmdFVPreProcessLine{FVStepLineNo}{}{}{fail}patchcmdFVListProcessLine{kernleftmargin}{FVStepLineNokernleftmargin}{}{fail}从 pdf 阅读器里的点击跳转效果和 python 脚本的输出看问题似乎修好了。其他包含修改代码的 tex 文档见项目 muzimuzhi/latex-examples 中的文件 fancyvrb-improvements.tex。文件中还包含修改行号引用风格的代码会在后续文章里介绍。最困难的部分可能是定位问题和知道可以把 FVStepLineNo 挪到哪笔者主要是通过手动展开来探索的。fancyvrb 被其他一些宏包依赖依赖关系比较深的是 tcolorbox - minted - fvextra - fancyvrb文中介绍的尝试并未经过充分测试。
http://www.huolong8.cn/news/45951/

相关文章:

  • 专门教做西餐的网站手机网站广告
  • 陕西住房和城乡建设厅网站电话wordpress wpadmin
  • 一个专门做ppt的网站中交建设集团有限公司
  • 团员注册网站怎么办网站
  • 建网站需要多少钱和什么条件云南网络推广报价明细
  • 邢台做网站的公司哪家好?WordPress速度慢的原因
  • 做系统的网站网站建设销售发展前景
  • 网站推广计划表怎样做触屏版手机网站
  • 保定网站制作案例网站侧边栏菜单
  • 规划设计导航网站做相亲网站的安全责任
  • 淄博网站建设推广网络推广软件赚钱
  • 免费制作网络商城网站wordpress文章末尾添加相关文章
  • 哪个网站做设计兼职不用压金域名手机网站源码
  • 北京网络网站建设福鼎手机网站建设
  • 济阳做网站技术网站源码wordpress
  • 支付网站搭建手机站是什么意思
  • 手袋 技术支持 东莞网站建设全民建网站
  • 自适应 网站开发申请带域名的免费空间
  • 网站跳出率是什么意思百度手机助手下载2022新版
  • 嘉兴网站制作网站建设rdm响应式网站开发
  • 新办公司网上核名在哪个网站做下载app浏览器
  • 一个网站如何工作流程游戏推广是做什么的
  • 织梦淘宝客网站爱站网官网关键词
  • Wordpress导航标签icon企业网站seo推广
  • 浦东做网站的公司哪些群体对网站开发有需求
  • 城乡建设部网站首页大连建设网站
  • 用老薛主机做网站wordpress卢松松自适应
  • 网站开发流程php网页开发基础实验总结
  • 网站收录在下降开源的网站后台程序
  • 公司建设网站费用会计怎么记seo网站优化流程