我正在制作一些乳胶投影仪幻灯片(但我认为这本身并不是一个特定于投影仪的问题).
我有以下内容:
\begin{itemize}
\item Issue1
\item Issue2
\item Issue3
\end{itemize}
Run Code Online (Sandbox Code Playgroud)
现在,我希望在issue1 和 issue2上传播的项目背后有一个正确的大括号(即'}').当然,我想在大括号后面写点东西.
在一个完美的世界里,我会写一些类似于:
\begin{itemize}
\left .
\item Issue1
\item Issue2
\right \} One and Two are cool
\item Issue3
\end{itemize}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我不在数学环境中而且我不能将整个片段放在数学环境中,因为在这种情况下,itemize不起作用.
是否有一个干净的解决方案或黑客来产生我想要的结果?
此致,巴斯蒂安.
通常我用
\AtBeginSection[]
{
\begin{frame}<beamer>{Gliederung}
\tableofcontents[currentsection]
\end{frame}
}
Run Code Online (Sandbox Code Playgroud)
在我的序言中,在新部分开始之前实现该目标,显示TOC,并突出显示现在的起始部分.
在我实际准备的谈话中,我有一个特殊的部分,我不希望这种行为.之前部分的过渡应该是"沉默的".所有其他部分应该像现在一样开始.
我相信一定是可能的.
我的机器上的文件关联(winxp home)是这样的,python脚本直接用python解释器打开.如果我双击python脚本,控制台窗口就会运行,并且每件事都很好 - 只要脚本中没有语法错误.
在这种情况下,控制台窗口会打开一会儿,但会立即关闭.读取错误消息太快.
当然,他们可以通过键入手动打开控制台窗口并执行脚本,python myscript.py
但我确信有一个更方便(即"双击")解决方案.
我需要扩展一个shell脚本(bash).由于我对python更熟悉,我想通过编写一些python代码来实现这一点,这些代码依赖于shell脚本中的变量.添加额外的python文件不是一种选择.
result=`python -c "import stuff; print('all $code in one very long line')"`
Run Code Online (Sandbox Code Playgroud)
不太可读.
我更喜欢将我的python代码指定为多行字符串,然后执行它.
我有以下代码
import ctypes
lib1 = ctypes.cdll.LoadLibrary("./mylib.so")
# modify mylib.so (code generation and compilation) or even delete it
lib2 = ctypes.cdll.LoadLibrary("./mylib.so")
Run Code Online (Sandbox Code Playgroud)
问题是lib2
指的是原始共享库,而不是新共享库。如果我在调用之间删除 mylib.so ,则不会出现错误。
使用ctypes._reset_cache()
没有帮助。
我如何判断ctypes
是否真正从硬盘重新加载库?
从pydantic 文档中我明白了这一点:
import pydantic
class User(pydantic.BaseModel):
id: int
name: str
class Student(pydantic.BaseModel):
semester: int
# this works as expected
class Student_User(User, Student):
building: str
print(Student_User.__fields__.keys())
#> dict_keys(['semester', 'id', 'name', 'building'])
Run Code Online (Sandbox Code Playgroud)
但是,当我想动态创建类似的对象时(遵循动态模型创建部分):
# this results in a TypeError
pydantic.create_model("Student_User2", __base__=(User, Student))
Run Code Online (Sandbox Code Playgroud)
我得到:
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
Run Code Online (Sandbox Code Playgroud)
问题:如何动态创建一个类Student_User
这个问题来自这里的问题
我想制作一个横跨一些文字的花括号.问题是我必须手动对齐x坐标,这不是一个干净的解决方案.
目前我用
\begin{frame}{Example}
\begin{itemize}
\item The long Issue 1
\tikz[remember picture] \node[coordinate,yshift=0.7em] (n1) {}; \\
spanning 2 lines
\item Issue 2
\tikz[remember picture] \node[coordinate, xshift=1.597cm] (n2) {};
\item Issue 3
\end{itemize}
\visible<2->{
\begin{tikzpicture}[overlay,remember picture]
\draw[thick,decorate,decoration={brace,amplitude=5pt}]
(n1) -- (n2) node[midway, right=4pt] {One and two are cool};
\end{tikzpicture}
} % end visible
\end{frame}
Run Code Online (Sandbox Code Playgroud)
这会产生所需的结果:
令人不满意的是,我必须通过反复试验(或多或少)来计算xshift值为1.597cm
没有xshift参数,结果是:
我想有一种优雅的方法可以避免显式的xshift值.
最好的方法是计算两个节点的最大x值并使用它,(正如Geoff已经建议的那样)
但是,能够在保持其当前y值的同时明确定义两个节点的绝对x值已经非常方便.这将避免调整第三个小数点后位置以确保括号看起来垂直的繁琐程序.
目前我用
Na = (3, 2, 4)
Nb = Na[1:]
A = np.arange(np.prod(Na)).reshape(Na)
b = np.arange(np.prod(Nb)).reshape(Nb)
Run Code Online (Sandbox Code Playgroud)
我想计算:
r = np.empty((A.shape[0], A.shape[2])
for i in range(A.shape[2]):
r[:, i] = np.dot(A[:, :, i], b[:, i])
Run Code Online (Sandbox Code Playgroud)
在文字中:A是"4个矩阵的堆叠"(形状(3,2)),即3d-阵列,b是"4个矢量的堆叠"(形状(3,)),即2d阵列.期望的结果是"4个矩阵 - 矢量 - 产物的堆叠",即矢量堆栈,即同样是2d阵列(形状(3,4)).
我对np.einsum和np.tensordot有一个中等深度的外观,但我用这些构建的任何解决方案至少与我的循环解决方案一样长且不易读.
但是我觉得这个简单问题应该有一个单线程.
我知道如何获得维基数据实体的直接超类。为此,我使用 SPARQL 代码,例如:
SELECT ?item ?itemLabel
WHERE
{
wd:Q125977 wdt:P279 ?item.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Run Code Online (Sandbox Code Playgroud)
其中wdt:P279
表示subclass of
- 属性。
但是,这种直接方法需要对 Wikidata API 进行多次单一请求。
如何通过单个 SPARQL 查询获得相同的信息?
(请注意,上面的示例图仅显示了一个缩略版本。所有超类的最终所需图为 13 层深,有 69 个节点,这意味着 68 个单个请求,如果有兴趣,请参阅此 jupyter notebook。)