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

注册于 2年前

回答
104
文章
0
关注者
3

不明白你想要的生效是什么意思?

image.png

似乎加上label选项即可.
下面是MWE和一个结合@深圳-Skyrmion提供的使用默认参数O的alternative solution.

\documentclass{ctexart}
\usepackage{xparse}
\usepackage{enumitem}
% 定义新的环境 ceshi,带有可选参数 o 和必要的内容参数 +b
% \NewDocumentEnvironment{ceshi}{o +b}{
%     \IfNoValueTF{#1}{% 如果没有提供可选参数
%         \begin{enumerate}
%             #2
%         \end{enumerate}
%     }{% 如果提供了可选参数
%         \begin{enumerate}[label=#1{\arabic*}]
%             #2
%         \end{enumerate}
%     }
% }{}
\NewDocumentEnvironment{ceshi}{O{} +b}{
    \begin{enumerate}[label=#1{\arabic*}]
        #2
    \end{enumerate}
}{}

\begin{document}
% 没有可选参数的 ceshi 环境
\begin{ceshi}
    \item 这是一
    \item 这是二
    \item 这是三
\end{ceshi}

%使用可选参数 resume 的 ceshi 环境
\begin{ceshi}[ahahaha]
    \item 这是新一
    \item 这是新二
    \item 这是新三
\end{ceshi}

\end{document}

下次可以指明参考代码来自:参考链接

一个显而易见的问题是,这段代码出现了两次
虽然我水平不够不太能看得懂,但是我删去其中一段之后不会出现类似无限递归调用的情况了.

\newtoks\patchtoks    % helper token register
\def\longpatch#1%     % worker macro
  {\let\myoldmac#1%
   \long\def#1##1{\patchtoks={##1}\myoldmac{\the\patchtoks}}}
\longpatch{\phantom}

至于要不要保留空白,if True:

\NewDocumentEnvironment{solution}{ +b }{%
  \ifsolution
      \textbf{答案}\quad #1
  \else
      \phantom{\parbox{\textwidth}{#1}}
  \fi
  }{\par}

if False:

\NewDocumentEnvironment{solution}{ +b }{%
  \ifsolution
      \textbf{答案}\quad #1
  %注释掉这个else的两行就可以实现去除空白
  % \else
  %     \phantom{\parbox{\textwidth}{#1}}
  \fi
  }{\par}

下面是一个xelatex+texlive运行成功的mwe

\documentclass[12pt]{ctexart}
\usepackage{xparse,zhlipsum}

\newtoks\patchtoks    % helper token register
\def\longpatch#1%     % worker macro
  {\let\myoldmac#1%
   \long\def#1##1{\patchtoks={##1}\myoldmac{\the\patchtoks}}}
\longpatch{\phantom}

\NewDocumentEnvironment{solution}{ +b }{%
  \ifsolution
      \textbf{答案}\quad #1
  %注释掉这个else的两行就可以实现去除空白
  % \else
  %     \phantom{\parbox{\textwidth}{#1}}
  \fi
  }{\par}

\newif\ifsolution
\solutiontrue %添加此句将输出答案,否则输出答案所需的空白
\begin{document}

设$f(x)$在$[0, 2]$上连续, 在$(0, 2)$内可导, 且$3f(0)=f(1)+2f(2)$, 证明: 存在存在$\xi \in (0, 2)$, 成立$f'(\xi)=0$.

\begin{solution}
  这是问题的解答.

  \zhlipsum[1]
\end{solution}

\begin{enumerate}
  \item 第一题的题目

  \begin{solution}
   \zhlipsum[1]
  \end{solution}
  \item 第二题的题目
  
  \begin{solution}
    这是第二题的答案
    \zhlipsum[8]
  \end{solution}
\end{enumerate}

\end{document}

image.png

个人感觉是你对上面链接的使用没有理解的很好.

如有错漏(尤其是对于patch的那一段),请各位批评指正。

为什么不看文档,是不喜欢吗?

image.png

image.png

建议在命令行输入texdoc tikz找到有关的符号的详细说明

image.png

(point A) -| (point B)指的是从A出发先水平再垂直方向连接坐标点B
(point A) |- (point B)指的是从A出发先垂直再水平方向连接坐标点B

这里的point可以是坐标形式 (2,4) 也可以是坐标点的名称 (S) 因为你前面已经定义了 \coordinate (S) at (2,2);

首先看你的第一个MWE:预定义了坐标点S(2,2)

\draw[red] (0,0) -- (0,0)-| (S);
\draw[blue] (0,0) -- (0,0) |- (S);

指的是从(0,0)出发,画红色直线到点(0,0),然后从(0,0)出发,先水平再垂直到(S),在脑海中想象,从(0,0)到(2,2)理应先向右再向上.同理,第二行代码从(0,0)画蓝色直线到点(0,0),之后先向上再向右,实际上符号|-以及-|是很形象和直观的.

P.S. 因此上面的代码中(0,0) -- (0,0)并无实际意义,可删去--(0,0).

接下来看第二个MWE,其实是稍微有点tricky的,看下面的例子.
诚如lshort中所言,此时指的是垂足模式

(0,0 -| S) 指 横坐标S的横坐标_, 纵坐标为 _0 的点
(0,0 |- S) 指 纵坐标S的纵坐标_,横坐标为 _0 的点
于是不难想象你得到的两条线.

但是上述表述诚如你所言,左边是一个坐标,右边是一个点,并不是规范的path (PointA) <curve-to> (PointB)表述形式,不建议使用.

关于显示坐标的问题,我不觉得上述的\path想象坐标是很困难的事情,你可以通过\node at (<point>) {$text$}来标注位置,不一定一定需要获得其坐标.

另一方面也可以使用pgfplots宏包提供的\getlastxy{\x}{\y}来获得当前坐标点的命令并保存到\x\y中,再使用\node输出,但是这样很繁琐,不如直接使用\node输出.

没有完全弄懂你的上述配置,但是要想解决的话,也许可以配置一个xelatex*2recipe
放到"latex-workshop.latex.recipes"内部

    {
      "name": "xelatex*2",
      "tools": [
        "xelatex",
        "xelatex",
      ],
    },

我想要解决你的问题可能需要研究一下latex-workshop插件预览pdf文件的位置信息文档
有可能这与你采用如下配置移动pdf文件位置有关

"outputDir": "./out",   // 设置编译输出文件的目录为 ./out
      "viewer": {
        "external": {
          "command": "cp %DIR%/%DOCFILE%.pdf %DOCFILE%.pdf.backup && cp %DIR%/%DOCFILE%.pdf %DOCFILE%.pdf",  // 复制生成的 PDF 文件到源文件目录
          "forwardSearch": {
            "args": []   // 设置正向搜索的参数
          }
        }
      }

个人觉得如非特别有必要,不要修改过多默认配置

浅浅自问自答一下,感谢啸行大佬的热情帮助,要想实现这一效果的话,还可以直接借助ctex宏包提供的format选项实现这一效果.

image.png

\documentclass[12pt]{ctexart}
\usepackage[margin=1in]{geometry}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage{lipsum}
\ctexset{
    section/name = {\S},
    subsection/name = {\S},
}
\numberwithin{equation}{section}
\begin{document}
\section{equation sign}
\subsection{first subsection}
\begin{align}
  a^2 + b^2 = c^2 \\
  1 + 1 = 3
\end{align}
\subsection{second subsection}
This is a text paragraph.
\section{ref style}
\subsection{A subsection}
\begin{subequations}
  \begin{align}
  \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^1}{1111} \\
  \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^2}{2222} \\
  \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^3}{3333} \\
  \sum_{n=1}^{\infty} \frac{1}{n^2} &= \frac{\pi^4}{4444}\label{eq:pythagoras}
  \end{align}
  \label{eq:mult-lines}
\end{subequations}
\subsection{Another subsection}
\begin{equation}
    a^2+b^2=c^2
\end{equation}
Hello world \ref{eq:pythagoras}, equation ref style: \eqref{eq:pythagoras}
\end{document}

根据lshort中的介绍,也可以使用footnotemark配合footnotetext实现.

image.png

image.png

下面是mwe

\documentclass{book}
\usepackage[paperheight=3in]{geometry}
\usepackage{ctex}
\usepackage{tcolorbox}
\begin{document}

浔阳江头夜送客,枫叶荻花秋瑟瑟\footnote{注一}。

主人下马客在船,举酒欲饮无管弦。

\begin{tcolorbox}
    忽闻水上琵琶声,主人忘归客不发\footnotemark。

    醉不成欢惨将别\footnotemark,别时茫茫江浸月。
\end{tcolorbox}
\footnotetext[2]{注二}
\footnotetext[3]{注三}

\end{document}

当然,考虑到footnotetcolorbox环境更好的耦合性的话,还是建议使用@u19850 🐟老师的做法。

PPPPPS.注意贴代码的时候可以善用markdown的代码块环境,同时善用预览功能,将你的所有代码都放到代码块内.

image.png

可以考虑before upper选项
下面是一个例子

\documentclass{book}
\usepackage{ctex}
\usepackage{tcolorbox}
\begin{document}
\tcbset{before upper={\parindent22pt}}
\begin{tcolorbox}
    第一段,先帝创业未半而中道崩殂,
    今天下三分,益州疲弊,此诚危急存亡之秋也。
    然侍卫之臣不懈于内,忠志之士忘身于外者,
    盖追先帝之殊遇,欲报之于陛下也。
    
    第二段,诚宜开张圣听,以光先帝遗德,
    恢弘志士之气,不宜妄自菲薄,
    引喻失义,以塞忠谏之路也。
    
    第三段,宫中府中,俱为一体,陟罚臧否,不宜异同。
    若有作奸犯科及为忠善者,宜付有司论其刑赏,
    以昭陛下平明之理,不宜偏私,使内外异法也。
\end{tcolorbox}
\end{document}

image.png

可以利用pgfplots的方法实现...建议参考pgfplots文档P104的做法。下面是MWE和效果。
image.png

\documentclass[12pt]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usepgfplotslibrary{fillbetween}
\usepackage{amsmath}
\begin{document}
    \begin{tikzpicture}[scale=1.5]
        \begin{axis}[
            axis lines=middle,
            axis on top,
            xtick = \empty,
            ytick = \empty,
            xlabel = {$x$},
            ylabel = {$y$},
            xmin=-2.0, xmax=2.0,
            ymin=-2.5, ymax=2.5,
            samples=1000]
            \addplot[semithick,name path=A] ({x},{rad(atan(x))});
            \path[name path=B] (0,pi/2) -- (1.8,pi/2);
            \draw[dashed](-3,pi/2)--(3,pi/2)(-3,-pi/2)--(3,-pi/2);
            \addplot[red!30,opacity=.3] fill between[of=A and B,soft clip={
                (0,0) rectangle (1.8,2)
            }];
        \end{axis}
    \end{tikzpicture}
    
\end{document}

image.png

给一个不太成功的尝试....
我在symbols中找不到上面单一的符号....只好找了个类似的代替,上面的符号应该是一种中文书记排版系统里面的某个预定义排版样式,实在是不想,也不会自己画这一样式.
也许有一下两种思路:

  • 使用pifont宏包提供的\dingline命令,缺点是只能使用pifont宏包提供的符号,同时左右间距不可调
  • 基于tikzmarkings实现路径的替换,可见下面的mwe和效果
\documentclass[12pt]{ctexart}
\usepackage[margin=1.5in]{geometry}
\usepackage{lipsum}
\usepackage{tikz}
\usetikzlibrary{decorations,decorations.markings}
\usepackage{pifont}
\makeatletter
\newcommand{\part@title@box}[1]{
    \stepcounter{part}
    \begin{center}
        {\Huge{\bfseries\kaishu 第\chinese{part}部分} \hspace{.5em} {\songti #1}}\par
        \vspace{2em}
        % \dingline{253} %使用pifont宏包提供的插入单行字符
        \begin{tikzpicture}[
            decoration={
                    markings,
                    mark=between positions 0 and 1 step 3mm with
                    {\node {\ding{248}};}%插入字符...但我实在找不到
                    }
        ]
        \path [postaction={decorate}] (.05\textwidth,0) -- (.95\textwidth,0);
        \end{tikzpicture}
    \end{center}
}
\ctexset{
    part = {
        name = {},
        numbering = false,
        format = \part@title@box,
    },
    section = {
        name = {第,章},
    }
}
\makeatother
\begin{document}
    \part{\LaTeX{}简介}
    \lipsum[1]
    \section{初见\LaTeX{}}
    \lipsum[2]
    \section{再见\LaTeX{}}
    \lipsum[3]
    \part{\LaTeX{}入坑}
    \section{又见\LaTeX{}}
    \lipsum[2-6]
\end{document}

image.png

希望各位提供更好的处理方式,共同交流学习!

贴一个在群里贴过的也许有帮助的链接.感觉要从字体层面复刻是蛮困难的事情.

https://ctan.org/tex-archive/macros/latex/contrib/psnfssx/mathtime在这个页面可以找到mathtime.dtx,文件

不太明白你想问什么?

CTAN上的tkz-euclide宏包就是英文的,官方没有发布过任何版本的tkz-euclide中文文档.你想获取中文版文档只能尝试搜索是否有人翻译了该宏包.

想获得中文版宏包可以自己发起/参与一些翻译宏包的项目,例如中文版文档翻译项目.

可以尝试fancyhdr文档中的做法

image.png

\documentclass[11pt,a4paper,twoside]{article}
\usepackage{ctex}
\usepackage{fancyhdr}
\usepackage{lipsum}
\addtolength{\headwidth}{\marginparsep}
\addtolength{\headwidth}{\marginparwidth}
\pagestyle{fancy}
\chead{页眉}   

\usepackage{marginnote}

\begin{document}

\lipsum[2] \marginnote{边栏文本}

\lipsum[3-7] \marginnote{另一段边栏文本}

\end{document}

image.png

发布
问题