在这个 M(n)WE 中,丢失了一个分号。
该tex.print
部分给出了它在新命令中直接使用的良好字符链,但由于我想在外部使用它\draw
,tikz 要求将分号放在它应该在的位置。
\documentclass{article}
\usepackage{fontspec}
\usepackage{tikz,xparse}
\usetikzlibrary{quotes,through,calc,intersections,backgrounds}
\usepackage{luacode}
\usepackage[margin=1cm]{geometry}
\luadirect{require "LTG_Droites"}
\NewDocumentCommand{\Dt}{%
O{1.2,1.2} % extention
m % nom de la droite
}{%
\directlua{Draw_Droite(\luastring{#2},#1)}
% the following works in tikzpicture
% but want just the coordinate part
%\draw \directlua{Draw_Droite(\luastring{#2},#1)} ;
}
\begin{document}
\begin{tikzpicture}
% doesn't work
%\draw \Dt{d1} ;
\end{tikzpicture}
\Dt{d1} ;
\end{document}
还有LTG_Droites.lua
-- #### Draw_Droite
-- ####
-- #### Renvoie (A)--(B) + extention
function Draw_Droite ( d , extA , extB )
local A = "(0,0)"
local B = "(1,1)"
tex.print("($"..A.."!"..extA.."!"..B.."$)--($"..B.."!"..extB.."!"..A.."$)")
end
答案1
\draw
您需要以下代码扩张tikz 语法:
\RequirePackage{luatex85}
\documentclass{article}
\usepackage{fontspec}
\usepackage{tikz,xparse}
\usetikzlibrary{quotes,through,calc,intersections,backgrounds}
\usepackage{luacode}
\usepackage[margin=1cm]{geometry}
\luadirect{require "LTG_Droites"}
\DeclareExpandableDocumentCommand{\xDt}{%
O{1.2,1.2} % extention
m % nom de la droite
}{%
\directlua{Draw_Droite(\luastring{#2},#1)}%
% the following works in tikzpicture
% but want just the coordinate part
%\draw \directlua{Draw_Droite(\luastring{#2},#1)} ;
}
%force full expansion of \Dt in two expansion steps.
\newcommand\Dt{\romannumeral`\^^@\xDt}
\begin{document}
\begin{tikzpicture}
% doesn't work
\draw \Dt{d1} ;
\end{tikzpicture}
\Dt{d1} ;
\end{document}