是否可以让字符在渐近线输出中仍然可以搜索?

是否可以让字符在渐近线输出中仍然可以搜索?

考虑以下 MWE。抱歉,我无法提供更简单的一个。

% spiral.tex
\documentclass[preview]{standalone}
\usepackage[inline]{asymptote}

\begin{document}
\begin{asy}    
settings.tex="pdflatex";
settings.prc=false;
settings.render=0;

import graph3;
import math;
size(200);
size3(150,180,100);
defaultpen(fontsize(10pt));

currentprojection=orthographic(camera=(8,6,4),up=Z,target=O,zoom=1);

real x(real t) {return t*cos(2pi*t*3);}
real y(real t) {return t*sin(2pi*t*3);}
real z(real t) {return t;}

real xMax=3, yMax=3, zMax=4;

path3 p=graph(x,y,z,0,2.735,operator ..);
triple P=relpoint(p,0.986);
triple Q=(P.x,P.y,0);

pen spiPen=deepcyan+1.2bp;
draw(p,spiPen,Arrow3(size=3));
dot(P);
label("$P$",P,Z+X);

guide3 h=P--Q;
guide3 rho=O--1.2Q; 

draw(h,  dashed+0.7bp);
draw(rho,dashed+0.7bp);

real arcd=1.5;
guide3 garc=arc(O,arcpoint(O--X,arcd),arcpoint(rho,arcd));
draw(garc,gray,Arrow3(size=3));

label("$z$",h,E);
label("$\rho$",rho,SW);
label("$\phi$",garc,NE);

pen xyzPen=darkblue+1bp;
xaxis3(0,xMax,xyzPen,Arrow3(size=3));
zaxis3("",0,zMax,xyzPen,Arrow3(size=3));

label("$Z$",zMax*Z,SW);
shipout(bbox(Fill(lightyellow)));
\end{asy}
\end{document}

编译后Asymptote.bat spiral产生下列结果。

在此处输入图片描述

我的批次Asymptote.bat定义如下。

rem Asymptote.bat
echo off

rem %1 TeX input filename without extension

if exist "%~1.pdf" del "%~1.pdf"

if exist "%~1.tex" pdflatex "%~1.tex"

if exist "%~1-*.asy" asy -f pdf %~1-*.asy

if exist "%~1.tex" pdflatex "%~1.tex"

for %%x in (pdf tex asy pre) do (if exist "%~1-*.%%x" del "%~1-*.%%x")

for %%x in (aux log pre) do (if exist "%~1.%%x" del "%~1.%%x")

我注意到,由于转换,PDF 输出中的字符无法搜索。我们可以让它们仍可搜索吗?

附加问题:

使用asy -f pdf %~1-*.asy,为什么我不能在asy命令中使用双引号,即asy -f pdf "%~1-*.asy"

答案1

为了获得可搜索的文本,必须将 3d 标签替换为投影的 2d 标签,例如 而label("$Z$",project(zMax*Z),SW)不是label("$Z$",zMax*Z,SW)

asy带有双引号文件名的命令可以用作asy -f pdf "%~n1-"*.asy,这里“%~n1”表示不带扩展名的文件名,因此无需手动删除扩展名,它可以用作batch.bat filename.texbatch.bat "filename.tex"

相关内容