在 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 process
anki 插件中输入以下内容:
#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 自动换行您输入的任何太长的文本,而无需该类所需的包,这似乎与 相冲突。scalebox
ankicard
varwidth
standalone
graphicx
说明:
作为先前的解决方案已经说过,一些软件包需要pdflatex
编译器,而编译器并不总是在任何生成的.dvi
文件中输出所有必要的数据,因此不仅 anki 的默认使用latex ...
不起作用,第二个命令dvipng ...
也不起作用,所以我们必须更改这两者。
切换到pdflatex ...
编译很简单,直接从链接的答案中获取。这将生成一个名为tmp.pdf
但是,如果我们想使用article
文档类型(anki 默认使用)来允许插入和缩放图像等,我们就不能standalone
像其他答案提到的那样使用类,因此我们不仅无法获得提供的自动编译.png
,standalone
也无法获得其自动裁剪。幸运的是,这两个都很容易修复,使用pdfcrop
,它会生成一个文件tmp-crop.pdf
,以及pdftoppm
,它会生成一个名为 的文件tmp-1.png
。(注意:如果pdfcrop --debug
表示它可以找到 ghostscript 并且找不到,请仔细检查它C:\Windows\System32
是否在您的路径中。)
最后,anki 实际上并不使用 shell 来执行这些命令,它只是运行可执行文件。但是因为rename
和mv
不是(我从它们在这里产生错误的事实推断)实际的程序,而是 shell 中的函数,所以我们不能rename tmp-1.png tmp.png
直接将其放入 LaTeX 构建过程文件中。相反,我们只是添加一个间接层并让它调用一个.bat
为我们执行此操作的文件。