Anki:显示的尺寸与指定尺寸不匹配

Anki:显示的尺寸与指定尺寸不匹配

在 Anki 中,我在 LaTeX 编码中指定的尺寸与显示的尺寸不匹配。

MWE:将页眉和页脚保留为 Anki 默认设置

\documentclass[12pt]{article}
\special{papersize=3in,5in}
\usepackage[utf8]{inputenc}
\usepackage{amssymb,amsmath}
\pagestyle{empty}
\setlength{\parindent}{0in}
\begin{document}

\end{document}

分别输入[latex]\rule{1cm}{1cm}[/latex](并调整笔记的 CSS,以便生成的图像不会使用 调整大小img{max-height:none; max-width:none;})将显示一个大约 1.75cm x 1.75cm 的正方形,而不是预期的 1cm x 1cm 的正方形。

我该如何调整才能准确显示我在 LaTeX 中指定的尺寸?

显而易见的解决方案是某种方式来缩放整个 LaTeX 文档,但我对此的搜索一直没有结果。

我不想重新缩放 Anki 生成的实际图像(因此使用 CSS),因为这会使它们变得模糊。

我已尝试过:

  • 调整字体大小不会修复上面的 MWE,因为 LaTeX 仍然认为 1cm 是 ~1.75cm。

  • 调整纸张尺寸似乎没有任何作用。

其他人建议的,我也尝试过的:

  • \scalebox并且\resizebox(在页眉中放入\usepackage{graphicx}/后\usepackage{graphics})不会在视觉上调整任何内容的大小,但会导致其他 LaTeX 对象将它们注册为更小。例如,使用修改后的页眉和默认页脚,

    [latex]\scalebox{0.5}{\rule{1cm}{1cm}}foo bar[/latex]

    将产生一个大于 1cm 的框,遮挡单词foo,然后是单词bar。(由@John Kormylo 建议)

编辑:有关 anki LaTeX 编译过程的信息。已删除,如果您真的想知道,请参阅我的回答。

编辑:半失败的尝试,已删除,如果你真的想知道,请参阅我的回答。

答案1

我找到的先前解决方案(先前的解决方案) 使用了standalone类,并且不能graphicx很好地处理包,也不能处理图像,而图像在 anki 中非常有用。为了解决这个问题,我反而想出了下面的方法。

在 Anki 中,将以下内容作为 LaTeX 标题:

\documentclass[12pt]{article}
\RequirePackage{graphicx}
\RequirePackage{environ}
\pagestyle{empty}
\setlength{\parindent}{0in}
\NewEnviron{ankicard}{\fontsize{16}{19}\selectfont\scalebox{0.6}{\BODY}}{}
\begin{document}
\begin{ankicard}

以及以下作为页脚:

\end{ankicard}\end{document}

并在Edit LaTeX build processanki 插件中输入以下内容:

#original setting
#newLaTeX = \
#[
#    ["latex", "-interaction=nonstopmode", "tmp.tex"],
#    ["dvipng", "-D", "200", "-T", "tight", "tmp.dvi", "-o", "tmp.png"]
#]

# ======

#Setting for pdflatex compilation
newLaTeX = \
[
  ["pdflatex", "-interaction=nonstopmode", "tmp.tex"],
  ["pdfcrop", "tmp.pdf"],
  ["pdftoppm", "-png", "-r", "200", "tmp-crop.pdf", "tmp"],
  ["ankirename.bat"]
]

# make the changes
import anki.latex
anki.latex.latexCmds = newLaTeX

(只有第二个列表是新的,其余的都是附加组件),并将ankirename.bat其内容放在路径中的某个位置

rename tmp-1.png tmp.png

应将 anki 中所有(新生成的)LaTeX 缩放到适当的大小。如果没有,您可以在 LaTeX 标头环境中摆弄0.6参数。这还应允许在 anki 中放置和缩放图形,并应允许 LaTeX 自动换行您输入的任何太长的文本,而无需该类所需的包,这似乎与 相冲突。scaleboxankicardvarwidthstandalonegraphicx

说明:

作为先前的解决方案已经说过,一些软件包需要pdflatex编译器,而编译器并不总是在任何生成的.dvi文件中输出所有必要的数据,因此不仅 anki 的默认使用latex ...不起作用,第二个命令dvipng ...也不起作用,所以我们必须更改这两者。

切换到pdflatex ...编译很简单,直接从链接的答案中获取。这将生成一个名为tmp.pdf

但是,如果我们想使用article文档类型(anki 默认使用)来允许插入和缩放图像等,我们就不能standalone像其他答案提到的那样使用类,因此我们不仅无法获得提供的自动编译.pngstandalone也无法获得其自动裁剪。幸运的是,这两个都很容易修复,使用pdfcrop,它会生成一个文件tmp-crop.pdf,以及pdftoppm,它会生成一个名为 的文件tmp-1.png。(注意:如果pdfcrop --debug表示它可以找到 ghostscript 并且找不到,请仔细检查它C:\Windows\System32是否在您的路径中。)

最后,anki 实际上并不使用 shell 来执行这些命令,它只是运行可执行文件。但是因为renamemv不是(我从它们在这里产生错误的事实推断)实际的程序,而是 shell 中的函数,所以我们不能rename tmp-1.png tmp.png直接将其放入 LaTeX 构建过程文件中。相反,我们只是添加一个间接层并让它调用一个.bat为我们执行此操作的文件。

相关内容