Sagittarius Rover
Sagittarius Rover
我要成为TikZ糕手/(ㄒoㄒ)/~~

注册于 2年前

回答
105
文章
0
关注者
3

自己给一个基于kayval的解答。

\documentclass[12pt]{ctexart}
\usepackage[margin=1in]{geometry}
\setlength{\parindent}{0pt}
\usepackage{keyval}
\makeatletter
\def\mwe@vala{defaulta}
\define@key{mwe}{opa}{\def\mwe@vala{#1}}
\def\mwe@valb{defaultb}
\define@key{mwe}{opb}{\def\mwe@valb{#1}}
\newcommand\foo[2][]{
    \begingroup
    \setkeys{mwe}{#1}%
    The opa is: \mwe@vala. \par
    The opb is: \mwe@valb. \par
    The Parameter is: #2. \par
    \endgroup
}
\makeatother
\begin{document}
    \foo{Explorer}

    \foo[opa=opa,opb=opb]{Explorer}

    \foo[opb=opb]{Explorer}

    \foo[opa=opa]{Explorer}
\end{document}

image.png

请提供文本形式的代码,并用围栏代码块包裹,以方便调试。
另外,请你同步提供的learnlatex.bib文件,以便可以让潜在的回答者一下载/复制就可以编译。

另附有关文档内容,你是否使用pdflatex-pdflatex-bibtex-pdflatex方法编译?
image.png

使用\c_colon_str替换即可,参考链接

\documentclass{article}
\usepackage{tikz}
\ExplSyntaxOn
\fp_new:N \l__skyrmion_rotate_fp
\fp_set:Nn \l__skyrmion_rotate_fp {30}
\cs_new_protected_nopar:Nn \l__skyrmion_tmp_cs:
  {
    \draw (0,0) -- (1,1)
     node [ rotate~around = { \fp_use:N \l__skyrmion_rotate_fp \c_colon_str (0,0) } ] {test};
  }
\ExplSyntaxOff
\begin{document}
\ExplSyntaxOn
\tikz { \l__skyrmion_tmp_cs: }
\ExplSyntaxOff
\end{document}

白嫖快乐~

image.png

请提供你的LaTeX代码,而不只是一个word截图,论坛的作用是帮助你修改你的代码,而不是像接单一样替你实现你的排版效果。

请展示你使用tabularray宏包进行的尝试以及效果(体现你的付出和工作量),并提供规范的MWE

image.png

在你的代码中涉及@的内容前后加上\makeatletter\makeatother,以处理@的catcode的问题

\documentclass[openany]{book}
\usepackage{geometry}
\geometry{
    papersize={10.5cm,14.85cm},
    %showframe,
    margin=1cm,
    }
\makeatletter
\renewcommand{\part}{%
  \if@openright
    \cleardoublepage
  \else
    \clearpage
  \fi
  \thispagestyle{empty}%
  \if@twocolumn
    \onecolumn
    \@tempswatrue
  \else
    \@tempswafalse
  \fi
  \null\vfil
  \secdef\@part\@spart}
\makeatother
\begin{document}
    \setlength{\parindent}{2em}
    \title{title}
    \author{author}
    \date{date}
    \maketitle
    \tableofcontents
    \part{}
    \chapter{}
    Hello\TeX{}!
    \part{}
    \chapter{}
    Hello\TeX{}!
\end{document}

image.png

另一种等价的更优雅的是使用\patchcmd:

\usepackage{etoolbox}%
\patchcmd{\part}{\thispagestyle{plain}}{\thispagestyle{empty}}{}{}

我是不懂这个代码的,both 数学原理 and LaTeX Tikz实现
我只是个轮子的搬运工

参考(copy)自下面的链接John Kormylo‘s brilliant solution on TSE

\documentclass[tikz,border=2pt]{standalone}
\usetikzlibrary{calc,intersections}
\newlength{\bigenough}
\newcount\total
% locates both points on a closed shape tangent to a point outside the shape.
% \tangent{pathname}{center}{point}{first}{second}
\newcommand{\tangent}[5]% #1=path name for shape, #2=coordinate name for center, #3=cordinate name for outside point
{\begingroup% #4=coordinate name for first tangent point, #5=coordinate name for second coordinate point
\setlength{\bigenough}{1cm}
\loop% loop until big enough
  \path[name path=temp]  ($(#2)!\bigenough!-90:(#3)$)--($(#2)!\bigenough!90:(#3)$);
  \path[name intersections={of = #1 and temp, total=\t}]%
    \pgfextra{\global\total=\t};%
  \ifnum\total<2 \global\bigenough=2\bigenough\repeat%
\endgroup
\coordinate (#4) at (intersection-1);% initial guess
\coordinate (#5) at (intersection-2);%
\tangentsearch{#1}{#2}{#3}{#4}%
\tangentsearch{#1}{#2}{#3}{#5}}

% find tangent using binary search
\newcommand{\tangentsearch}[4]% #1=path name for shape, #2=coordinate name for center, #3=cordinate name for outside point
{\begingroup% #4=coordinate name for tangent point (initail guess -> final)
\loop% loop until only 1 intersection
  \path[name path=temp] (#3)--($(#4)!-\bigenough!(#3)$);
  \path[name intersections={of = #1 and temp, total=\t}]%
    \pgfextra{\global\total=\t};%
\ifnum\total=2 \coordinate (#4) at ($(intersection-1)!0.5!(intersection-2)$);
  %\draw[pink] (intersection-1)--(intersection-2);% included only for debugging purposes
  \path[name path=temp] (#4)--($(#4)!-\bigenough!(#2)$);
  \path[name intersections={of = #1 and temp}];%
  \coordinate (#4) at (intersection-1);%
  \repeat%
\endgroup}

\begin{document}
    \begin{tikzpicture}
        \draw [gray!70] (-4,-4) grid (4,4);
        \draw [->] (-4,0) -- (4,0) node [below left] {$x$};
        \draw [->] (0,-4) -- (0,4) node [below left] {$y$};
        \draw[name path=ellipse,thick,fill=gray!30,opacity=0.5] (0,0) ellipse (2 and 1);
        % \draw [thick] (2,0) arc (0:360:2 and 1);
        %\coordinate (O) at (0,0);
        %\node at (O) [below left] {$O$};
        %这里可以缩行
        \coordinate[label={below left:$O$}] (O);
        % \coordinate (P) at (1,2);
        % \fill (P) at (1,2) circle (1pt) node [above right] {$P$};
        %这里也可以缩行
        \node[label={above right:$P$},circle, fill, inner sep=1pt] (P) at (1,2) {};
        \tangent{ellipse}{O}{P}{X}{Y}
        \draw (X)--(P)--(Y);
    \end{tikzpicture}
\end{document}

image.png

不得不再次强调你的提问仍然存在一些可以改进的地方:
  1. 标签不要放一些奇奇怪怪的东西,你这里的标签完全可以是profcollege,而不是我想要图片中的这种效果,为啥代码输出的只有MP字母呢....提醒好多遍了;
  2. 代码请用markdown代码块的样式,展示文本形式的MWE,以最大化方便别人调试你的代码

由于我的lualatex还没整好,我决定拾人牙慧 @u79794 ,补充一下这个回答。

根据profcollege文档内容可见,你所用代码需使用lualatex引擎编译。
image.png

@u79794 老师的编译结果如下:

image.png

虽然我不太了解tikz-3d这个包,但参照文档内容(如下图)略加修改一下视线的夹角 theta 和 phi可以实现类似效果:
image.png

下面是mwe和效果:

\documentclass[tikz,border=1cm]{standalone}
\usepackage{tikz-3dplot}
% \usetikzlibrary{calc}
% \usetikzlibrary{3d}
\begin{document}
\tdplotsetmaincoords{70}{120}
\begin{tikzpicture}[tdplot_main_coords]
\draw[->,red] (0,0,0) -- (1,0,0) node[anchor=north east]{$x$};
\draw[->,green] (0,0,0) -- (0,1,0) node[anchor=north west]{$y$};
\draw[->,blue] (0,0,0) -- (0,0,1) node[anchor=south]{$z$};
\end{tikzpicture}
\end{document}

image.png

您好,有以下的几个问题需要你注意:

image.png

  1. 图片文件没有成功上传,需要等待 uploading成功才能点击提交问题
  2. 提问需要提供最小工作示例(定义可见下面你提出的另一个问题)(保证别人只要复制就可以直接编译得到结果),你上面给出的代码仅仅是一个小片段,别人无法测试
  3. 请学习markdown代码块语法,并使用预览功能,将你的代码全部放进代码块中
  4. 请及时处理你的提过的另一个问题,对于我的上一个回答你并未理会我,也未补充MWE。出于礼貌,回答者希望得到提问者的回复,即使问题已经解决,也请在论坛上说明是如可解决的,以提供更大的边际影响。
  5. 对于你的这一问题,请不要使用.svg文件,可以导出为.pdf或者.eps

image.png

请注意MWE的定义,以及上一个回答里让你注意的几点问题:

image.png

  • 图片文件不提供给我,我直接下载编译不能直接复现你的问题,影响我debug
  • label设置还是不对,可以加上tabularray等更为相关的tag内容
  • MWE太大了,四百行你觉得有多少人愿意给你看(?)

经过测试,你的Large (No-)Working Example的问题是:
Line 214行
Line 269行
Line 336行
\tweek命令,缺少必选参数,修改为\tweek{#1}可以解决你的问题

另外,制作Minimal Working Example的过程可以有效提高你的debug能力,是可以很快找到这个错误的

latex3的循环语法练习了一下,基本上大大缩短了你的代码长度(大概缩了一半吧...)
遇到比较大的问题是tabularrayexpand展开选项在遇到l3时有点不好处理...
非常感谢鱼先生 @u19850 给出的使用\expandafter方法展开拼接字符串的方法,同时也感谢外国友人Ulrike Fischer提供的莫大帮助和提示

% trick to concat the items
\def\mycontent{}
\expandafter\def\expandafter\mycontent\expandafter{
    \mycontent
    <codes want to put together>
}

下面是缩行成功的MWE:

\documentclass[twoside]{book}
\usepackage[
    letterpaper,
    bindingoffset=15mm,
    textheight=250mm,
    textwidth=175mm,
    top=1in,
    bottom=20mm,
    footskip=0.5in,
    marginparwidth=0mm,
    marginparsep=0mm,
    margin = .6in
    ]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{kpfonts}
\usepackage{tabularray}
\pagestyle{plain}
\raggedright
\raggedbottom
\begin{document}

\ExplSyntaxOn
\clist_const:Nn \c_wwws_clist { What, Who, How, When, Where, Why }
\clist_const:Nn \c_questions_clist { 
    {What~do~I~want~to~achieve?},
    {Who~benefits?~Whose~help~do~I~need?},
    {Which~skills~do~I~need?},
    {What~is~my~timeline?},
    {Where~will~I~accomplish~this?},
    {Why~is~this~goal~important~to~me?}
}
\clist_const:Nn \c_goals_clist {
    {Annual~Goal},
    {Monthly~Sub-Goals~for~Annual~Goal},
}
\int_step_inline:nn {7}
{
    \int_step_inline:nn {2}
    {
        \newpage
        \begin{center}
        {
            \Large \textbf{{\clist_item:Nn \c_goals_clist {##1}}~\#~#1~}
        }
        \end{center}
        \vspace{5mm}
        \noindent
        \def\mycontent{}
        \int_step_inline:nn {6}
        {
            %迭代合并\mycontent内容的trick
            \int_compare:nTF{##1=1}{
                \expandafter\def\expandafter\mycontent\expandafter{
                \mycontent
                \SetCell[r=4]{c}{\clist_item:Nn \c_wwws_clist {####1}} & {\clist_item:Nn \c_questions_clist {####1}} \\
                & \\ & \\ & \\
                }
            }{
                \expandafter\def\expandafter\mycontent\expandafter{
                \mycontent
                \SetCell[r=4]{c}{Sub-Goal\\~\#~####1} & {} \\
                & \\ & \\ & \\
                }
            }
            
        }
        \begin{tblr}[expand=\mycontent]{
                width=175mm,
                colspec={ X[1,c] X[8,l] },
                vlines,hlines,
                rows={7mm, m, rowsep=1.0pt},
                font=\bfseries,
            }
            \mycontent
        \end{tblr}
        \newpage
    }
}
\ExplSyntaxOff
\end{document}

效果如下:
image.png

另外,需要注意的是:

  1. 你的MWE不够Minimal,应该尽可能删除其他无关代码以减少回答者的阅读量
  2. 这里是列表文本同时表述应清晰,避免使用“后面这几行”来指代. 遇到这种情况更好的处理方法是,分别提供两个.tex文件,并且说明是在forloop中插入第二个tblr会导致\item错误
  3. 论坛的label(标签)应尽量是<package name>,<keyword of your question>等对问题有概括性/便于分类的tag,请问下这个文件为啥去掉后面这几行能运行 有这几行就会报错呢 把后面这几行拿出来又能运行这些label非常不搭.

感谢 @u79794 的介绍,下面的issues中作者在github上已经修复这一点,但未同步到CTAN

如果强迫症已经晚期,可以参考其修改方式自行修改gb7714-2015.bbx以及gb7714-2015mx.bbx文件的修改方式

image.png

嗯..我找不到你所谓的cmex.pfb字体文件,只能用yhcmex.pfb代替
经过测试..似乎如下图设置可行【view】-【Fit to font bounding box】

image.png

你对各种字体真的很执着?此外,本问题与latex实际上可以说并无确切关联,是否应发到论坛上(?)

另外,有个问题希望你顺便补充一下,这个回答中 https://ask.latexstudio.net/ask/question/17415.html

"想要所有的数学符号,如int,sum,langle,rangle, sqrt等等,都变成Computer Modern math的字体" 什么是所有的数学符号,既然你想用所有的默认"cmu"数学符号,那为什么又要使用sitx数学字体呢?你上面指的所有数学符号列表是否是有限的呢?

参考TSE上的回答:https://tex.stackexchange.com/questions/14386/importing-a-single-symbol-from-a-different-font。基本思路也是“偷”,我不觉得你用的上那么多的数学符号。能否更确切地描述你另一个问题的需求,Eureka在交流群中也提出了类似的疑问。

您好,我不太确定这个问题的best practice是什么,但也许可以考虑unicode-math提供的range选项.
如下图所示,由于我找不到这个代码了,暂无法提供文本形式的代码...

image.png

你好,请提供最小工作示例文本
你上面的代码并不能直接复制就可以编译得到效果。

image.png

另一方面,我进行类似测试是完全可以实现你的需求的,你需要提供最小的一份可以复现你的问题的代码。

image.png

发布
问题